使用Webpack搭建一个最基本的React环境

React-init-webpack4- react-web react, webpack构建 项目结构 . ├── mock ----------------------------- 本地mock配置文件 ├── abc.json ------------------------- 项目构建配置文件 ├── package.json --------------------- 项目配置 ├── README.md ------------------------ 说明文件 ├── build ---------------------------- 构建代码文件 ├── config --------------------------- 构建配置文件 ├── index.html ----------------------- 入口页面 └── src ---------------------------- 立即下载

1.首先初始化项目结构

npm init

包名随意
在这里插入图片描述
填写好之后一路按回车,直到文件夹内生成 package.json 文件,

在与package.json同级的目录下新建一个文件夹用于新建项目
在这里插入图片描述

由于Node.js会自下而上的找包,所以我们把包安装在最外层(也就是package.json同级目录),让Node.js自己去找包,这样我们就只用安装一次包非常的方便。


2.安装webpack相关包

npm i webpack webpack-cli webpack-dev-server -D
npm i html-webpack-plugin html-loader -D

3.安装React相关包

npm i react react-dom -D

4.安装babel相关包

npm i @babel/core @babel/preset-env @babel/runtime -D
npm i @babel/plugin-transform-runtime -D
npm i @babel/plugin-proposal-class-properties -D
npm i @babel/preset-react -D
npm i babel-loader -D

同时在package.json同级目录下创建.babelrc文件
在这里插入图片描述

//.babelrc
{
    "presets":["@babel/preset-env","@babel/preset-react"], 
    "plugins":["@babel/transform-runtime","@babel/plugin-proposal-class-properties"]
}

5.创建项目

在package.json同级目录下创建文件夹,什么名字都可以(这里创建了一个叫做react的文件夹)
在这里插入图片描述
在react文件夹下创建以下文件
在这里插入图片描述

//index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
    
</body>
</html>
//index.js
import React from 'react'
import ReactDOM from 'react-dom'
const myh1=React.createElement('h1',{id:'myh1',title:'this is a h1'},'这是一个H1')
ReactDOM.render(myh1,document.getElementById('app')) 
//webpack.config.js
const{resolve}=require('path')
const HtmlWebpackPlugin=require('html-webpack-plugin')
const webpack=require('webpack')
const AddAssetHtmlWebpackPlugin=require('add-asset-html-webpack-plugin')
module.exports={
    entry:'./src/js/index.jsx',
    output:{
        filename:'[name].js',
        path:resolve(__dirname,'build')
    },
    module:{
        rules:[
            {
                test:/\.html$/,
                loader:'html-loader'
            },
            {
                test:/\.js|jsx/,
                use:'babel-loader',
                exclude:/node_modules/
            }
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:'./src/index.html'
        }),
        new webpack.DllReferencePlugin({
            manifest:resolve(__dirname,'build/manifest.json')
        }),
        new AddAssetHtmlWebpackPlugin([
            {filepath:resolve(__dirname,'build/react.js')},
            {filepath:resolve(__dirname,'build/reactdom.js')}
        ])
    ],
    mode:'production',
    devServer:{
        contentBase:resolve(__dirname,'build'),
        watchContentBase:true,
        port:8088,
        open:true
    }
}

当这些文件都创建好后进入到react文件夹内,运行webpack

然后打包就完成了
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述


额外部分

由于没有配置动态链接库,所以每次打包webpack都会把react和react-dom打包到main.js文件内,导致main.js文件体积过大 影响打包速度

在这里插入图片描述
动态链接库能够把第三方资源单独分离出来,减少打包体积


配置动态链接库

首先在package.json同级目录安装add-asset-html-webpack-plugin
npm i add-asset-html-webpack-plugin -D

在react目录下创建webpack.dll.js文件

//webpack.dll.js
const{resolve}=require('path')
const webpack=require('webpack')
module.exports={
    entry:{
        react:['react'],
        reactdom:['react-dom']
    },
    output:{
        filename:'[name].js',
        path:resolve(__dirname,'build'),
        library:'[name]_[hash]'
    },
    plugins:[
        new webpack.DllPlugin({
            name:'[name]_[hash]',
            path:resolve(__dirname,'build/manifest.json')
        })
    ],
    mode:'production'
}

然后更改webpack.config.js

//webpack.config.js
const{resolve}=require('path')
const HtmlWebpackPlugin=require('html-webpack-plugin')
const webpack=require('webpack')
const AddAssetHtmlWebpackPlugin=require('add-asset-html-webpack-plugin')
module.exports={
    entry:'./src/js/index.js',
    output:{
        filename:'[name].js',
        path:resolve(__dirname,'build')
    },
    module:{
        rules:[
            {
                test:/\.html$/,
                loader:'html-loader'
            },
            {
                test:/\.js|jsx/,
                use:'babel-loader',
                exclude:/node_modules/
            }
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:'./src/index.html'
        }),
        new webpack.DllReferencePlugin({
            manifest:resolve(__dirname,'build/manifest.json')
        }),
        new AddAssetHtmlWebpackPlugin([
            {filepath:resolve(__dirname,'build/react.js')},
            {filepath:resolve(__dirname,'build/reactdom.js')}
        ])
    ],
    mode:'production',
    devServer:{
        contentBase:resolve(__dirname,'build'),
        watchContentBase:true,
        port:8088,
        open:true
    }
}

进入react目录下,运行 webpack --config webpack.dll.js ,再运行webpack
这样就会单独将第三方资源进行打包了
在这里插入图片描述
打包体积非常小
在这里插入图片描述
main.js文件只有1.2k

运行npx webpack-dev-server可以对项目进行实时调试

海思方案定制hi3531dv200/SS528 DVR方案解析:从硬件选型到编解码实战应用 海思方案,Hi3518EV100,Hi3518CV100,Hi3515CV100,Hi3516CV100,Hi3516ECV100,Hi3516D,Hi3516A,Hi3519,Hi3520D,Hi3521A,Hi3535,Hi3531,Hi3536,Hi3536C,Hi3536D,Hi3518EV200,Hi3518EV201,Hi3520DV200,Hi3516CV200,Hi3516CV300,Hi3516AV200,Hi3520DV300,Hi3519V101,sd3403,hi3519av200 阅读详情

相关推荐

工业视觉检测实战指南:从硬件配置到AI算法部署

本文提供了一套完整的工业视觉检测系统搭建实战指南。从硬件选型(相机、光源、镜头、工控机)到AI算法(深度学习模型)部署,详细解析了如何为生产线配置一双“会思考的眼睛”。重点探讨了深度学习算法在复杂缺陷识别中的应用,并分享了模型训练、优化及云边协同部署的实战心得,旨在帮助工程师实现从实验室Demo到7x24小时稳定运行的工业落地。

weixin_29051193的博客 459

Babel transform-runtime

Babel @babel/plugin-transform-runtime 本节我们来学习 @babel/plugin-transform-runtime 和 @babel/runtime 。 Babel 中使用辅助函数来实现常见功能,例如 _extend() 函数,每个编译后的文件都需要定义它所需要使用的辅助函数。但这样显然会造成很多重复,所以 Babel 把所有的辅助函数都封装于 @babel/runtime,每个编译后的文件只需要引用 @babel/runtime 即可。 @babel/runtim

ivenqin的博客 1218

Calibre license失效的解决方法

Calibre license失效的解决方法

qq_45354630的博客 6482

库开发者如何配置babel,@babel/plugin-transform-runtime的配置说明

本文主要讲解@babel/plugin-transform-runtime以及@babel/runtime的作用在上一篇文章中,已经体现出了它的第一个作用,就是把babel语法转化过程中的辅助函数删除,然后使用@babel/runtime库中的辅助函数引入的方式使用。其实它还有其他作用,以下三点是它的主要作用: 作用2和3其实是在做API转换,对内置对象进行重命名,以防止污染全局环境。在上一节,我们引入’babel-polyfill’或’core-js/stable与regenerator-runtime/

weixin_42349568的博客 2985

TGAT Python:图神经网络中的动态图算法

其中,图神经网络中的动态图算法成为了研究的热点之一。在模型的 forward 方法中,通过循环调用 TGATLayer 实例来进行图神经网络的前向传播。最终,模型返回图中节点的表示向量 output,可以用于图分类等任务。TGAT 算法的核心思想是在节点之间建立注意力连接,以捕捉节点在不同时间步之间的关系。TGAT 算法通过引入注意力机制和时间信息,从而有效地对动态图数据进行建模和分析。通过以上 Python 代码,我们可以方便地构建和训练 TGAT 模型,并在图分类任务中应用它。

2301_79366435的博客 1830

【保姆级教程】基于UNet++&MobileNetv2的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv2作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

FJN110的博客 213

手把手教你搭建 Webpack 5 + React 项目

在平时工作中,为减少开发成本,一般都会使用脚手架来进行开发,比如。脚手架都会帮我们配置好了 webpack,但如果想自己搭建 webpack 项目要怎么做呢?

小柒的前端之旅 3961

YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml

全网最详细的YOLOv5源码解读之配置文件yaml。逐行注释,逐句讲解,一文带你了解yaml。小白必看!

路人贾的博客 1万+

babel源码解析之(@babel/plugin-transform-runtime)

前言 前面我们用了一篇很长的文章介绍了@babel/preset-env,感兴趣的可以去看我之前的一篇文章babel源码解析之(@babel/preset-env),今天我们要分析的是babel的一个插件,叫@babel/plugin-transform-runtime. 简介 我们看一下官网对它的描述: A plugin that enables the re-use of Babel’s injected helper code to save on codesize. 很简短的一个描述信息,翻译一

vv_bug 2804

Backtrader官方中文文档:第四章Concepts基本概念

官方Concepts章节:https://backtrader.com/docu/concepts/

汇渊科技 2602

【从零开始vnpy量化投资】十一. 实盘接入测试与正式实盘

本篇主要讲解如何使用vnpy进行实盘交易,由于上一节我们已经学习了模拟盘运行,如果一切顺利的话,只需要通过穿透测试,就可以正式部署实盘了。

魔落的博客 4233

Babel插件:@babel/plugin-transform-runtime

一 概述 每个Babel编译后的脚本文件,都以导入的方式使用Babel的帮助函数,而不是每个文件都复制一份帮助函数的代码。 1 优点 (1)提高代码重用性,缩小编译后的代码体积。 (2)防止污染全局作用域。(启用corejs配置) babel-polyfill会将Promise等添加成全局变量,污染全局空间。 ①默认使用@babel/runtime,corejs配置为2时...

weixin_34414196的博客 2156

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】Caliper从0到使用

技能大赛样题解析,caliper题目从0到使用

weixin_52865146的博客 2080

最小白的webpack+react环境搭建

本文转载于:猿2048网站https://www.mk2048.com/blog/blog.php?id=h2aabhj&title=%E6%9C%80%E5%B0%8F%E7%99%BD%E7%9A%84webpack%2Breact%E7%8E%AF%E5%A2%83%E6%90%...

378

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

基于Webpack搭建React开发环境

前几天一直在学习webpack,总算比之前学习的时候有了点收获,所以在昨天发布了一篇webpack入门笔记,今天继续使用webpack练了练手,搭建了一个React开发环境,如果还不熟悉的童鞋可以看一下昨天发布的笔记:入门webpack笔记 一、初始化项目文件夹 在任意目录下,新建一个文件夹作为你的项目文件夹,命名随意。随后使用命令行工具,切换到该文件夹,键入npm init进行初始化(遇到的问...

Mo_Luffy的博客 195

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Webpack搭建React开发环境

推荐一些系统学习的途径和方法。每个Web开发人员必备,很权威很齐全的Web开发文档。作为学习辞典使用,可以查询到每个概念、方法、属性的详细解释,注意使用英文关键字搜索。里面的一些 HTML,CSS,HTTP 技术教程也相当不错。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

2401_84419493的博客 1063

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

使用ts+webpack5手把手搭建一个react的环境

前言 写这篇博客的首要目的是为了让我自己能更好的掌握住webpack,同时了解脚手架的一个大概原理的一个出发点进行编写的。 准备工作 包管理工具(yarn或者npm,我使用yarn) 一个编辑器(我这边使用vscode) webpack,webpack-cli,webpack-dev-server react,react-dom,@types/react,@types/react-dom typescript 目录 环境配置 webpack配置 react配置 webpack-dev-server配置

qq_18470967的博客 1283

webpack搭建react开发环境

Webpack基础配置指南:1. 安装使用项目本地依赖安装(npm install --save-dev webpack);2. 配置文件包含mode(开发/生产模式)、entry(单/多入口)、output(输出路径)等核心配置;3. Loader处理各类资源转换(JSX/CSS/图片等),支持链式调用;4. 插件系统扩展功能,如HtmlWebpackPlugin管理HTML;5. 开发环境配置webpack-dev-server实现本地服务。建议通过配置文件管理构建流程,而非使用默认配置。文档参考中英文

weixin_46112174的博客 1326

使用Webpack搭建React开发环境

1. 安装Node.js Webpack实际是用Node.js写的,所以要先安装Node.js环境。而且Node.js中集成了NPM包管理,我们在后面用到的很多模块都需要使用NPM下载。 首先进入Node.js的官网,选择对应系统下载安装包,对于 windows 用户,直接下载安装包安装即可,如果是 Macos 用户,推荐使用 brew 进行安装。Node.js有很多版本,包括稳定版和开...

柯晓楠 553

Webpack 搭建基础 react 项目环境

使用webpack搭建基础的react项目环境,此篇仅作为工作中的笔记

weixin_43933035的博客 1700

使用webpack搭建react环境

tip:虽然官方提供了create-react-app的方式来创建react项目,但是还是想用用webpack来搭建下,当然create-react-app也是建立在webpack上的,可以使用npm run eject来调取webpack的配置文件 首先创建一个空文件夹,然后通过npm init初始化得到一个package.json文件 如果不想一个个安装依赖包,直接复制以下的代码到pack...

Dilomen的博客 420

不使用react脚手架使用webpack搭建一个最最简单的react项目

一般我们搭建react项目需要脚手架,可以自动生成,但是有一天当我做项目的时候去对文件进行打包的时候,不太懂webpack的各种配置文件,所以利用我这个实习生的身份,在导师没给我安排太多任务的时候,琢磨了一下webpack配置,并且经过各种尝试,终于没有借助react原来脚手架工具,自己运行了react项目,上一篇文章我已经写过了,但是写完看了之后,感觉总体还是挺乱的,所以现在重新梳理一下,讲一下具体步骤。 提示:本次使用的babel版本是7.0+,react使用的是17.0.2的版本,如果不是我所说的版

m0_47531829的博客 1929

搭建一个基于webpack的react项目

天天直接使用creat-react-app 也是用腻了 偶尔想试试自己动手搭建一个基于webpack的react项目 毕竟 你用脚手架建立的也是基于webpack建立 还是老样子废话不多说直接上代码 1.在桌面新建立一个空白文件夹 webpack-react 初始化项目 打开命令行 npm init -y 这个时候文件夹中会出现一个package.json文件 2.安装依赖 npm insta...

业余前端的职业经历 506

使用ts+webpack5一步一步搭建一个最简单react的环境

使用ts+webpack5一步一步搭建一个最简单react的环境 开始之前 在开始之前,你需要了解以下基础知识: 电脑上需要安装Node.js 包管理工具(npm或yarn) VS Code编辑器 了解webpack,webpack-cli,webpack-dev-server 了解react,react-dom,@types/react,@types/react-dom 了解typescript 环境配置 初始化node环境,这里用的是yarn yarn init -y 安装typescript环境

你是我修复不了的bug,但我会用一生去维护 903

使用webpack搭建一个react项目目录

1.npm i webpack webpack-cli webpack-dev-server -g 全局安装webpack webpack-cli webpack-dev-server 2.npm init初始化项目,创建package.json文件 3.创建项目目录: build文件夹=&gt;webpack.base.config.js/webpack.dev.config.js 按照不...

TB的Web 485
上一篇: webpack devserver
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值