详解如何用webpack4从零开始构建react开发环境


Posted in Javascript onJanuary 27, 2019

项目文件准备:

执行npm init,然后创建如下图所示的文件。

详解如何用webpack4从零开始构建react开发环境

在index.html里面添加

<!DOCTYPE html>
<html>
 <head>
  <title>The Minimal React Webpack Babel Setup</title>
 </head>
 <body>
  <div id="app"></div>
  <script src="./bundle.js"></script>
 </body>
</html>

在webpack.config.js里面添加

module.exports = {
 entry: './src/index.js',
 output: {
  path: __dirname + '/dist',
  publicPath: '/',
  filename: 'bundle.js'
 },
 devServer: {
  contentBase: './dist'
 }
};

在package.json里面添加

"scripts": {
  "start": "webpack-dev-server --config ./webpack.config.js --mode development"
 },

这样,当执行npm start的时候,就会使用webpack-dev-server把index.js相关文件打包,生成bundle.js,这时候浏览器会打开一个窗口,执行index.html(contentBase里面定义了),又因为index.html里面引入了bundle.js,就可以把压缩后的js文件执行起来。当然引入bundle.js这一步可以由我们强大的html-webpack-plugin完成。

安装依赖

npm install --save-dev webpack webpack-dev-server webpack-cli
npm install --save-dev @babel/core @babel/preset-env
npm install --save-dev babel-loader
npm install --save-dev @babel/preset-react

配置babel

在根目录下新建.babelrc文件,然后添加

{
 "presets": [
  "@babel/preset-env",
  "@babel/preset-react"
 ]
}

在webpack.config.js里面添加babel-loader配置

module.exports = {
 ...
 module: {
  rules: [
   {
    test: /\.(js|jsx)$/,
    exclude: /node_modules/,
    use: ['babel-loader']
   }
  ]
 },
 resolve: {
  extensions: ['*', '.js', '.jsx']
 }
 ...
};

引入react

npm install --save react react-dom

修改index.js: 这个ReactDOM.render就是把元素渲染到index.html里面id为'app'的元素厦门。在实际开发中,我们会把app.js渲染到这里,然后在app.js里面写redux,react-router构成的页面的起点。

import React from 'react';
import ReactDOM from 'react-dom';

const title = 'My Minimal React Webpack Babel Setup';

ReactDOM.render(
 <div>{title}</div>,
 document.getElementById('app')
);

配置react热加载

npm install --save-dev react-hot-loader

webpack.config.js

const webpack = require('webpack');

module.exports = {
 ...
 plugins: [
  new webpack.HotModuleReplacementPlugin()
 ],
 devServer: {
  contentBase: './dist',
  hot: true
 }
 ...
};

修改index.js

import React from 'react';
import ReactDOM from 'react-dom';

const title = 'My Minimal React Webpack Babel Setup';

ReactDOM.render(
 <div>{title}</div>,
 document.getElementById('app')
);

+ module.hot.accept();

这个时候执行npm start,就可以在浏览器访问http://localhost:8080看到Index.html里面的内容啦啦。参考链接:
https://www.robinwieruch.de/minimal-react-webpack-babel-setup/#babel-react-setup

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让textarea控件的滚动条怎是位与最下方
Apr 20 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
Aug 12 Javascript
用svg制作富有动态的tooltip
Jul 17 Javascript
JS+CSS3实现超炫的散列画廊特效
Jul 16 Javascript
正则 js分转元带千分符号详解
Mar 08 Javascript
详解Node.js开发中的express-session
May 19 Javascript
Angular 向组件传递模板的两种方法
Feb 23 Javascript
vue移动端弹框组件的实例
Sep 25 Javascript
JavaScript数组去重实现方法小结
Jan 17 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
May 21 Javascript
JavaScript隐式类型转换代码实例
May 29 Javascript
ng-alain的sf如何自定义部件的流程
Jun 12 Javascript
vue中轮训器的使用
Jan 27 #Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
Jan 27 #Javascript
JavaScript变量提升和严格模式实例分析
Jan 27 #Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
Jan 27 #Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
Jan 27 #Javascript
原生JS检测CSS3动画是否结束的方法详解
Jan 27 #Javascript
原生JS实现的跳一跳小游戏完整实例
Jan 27 #Javascript
You might like
PHP脚本的10个技巧(3)
2006/10/09 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
js select常用操作控制代码
2010/03/16 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Python闭包函数定义与用法分析
2018/07/20 Python
numpy.array 操作使用简单总结
2019/11/08 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
无偿献血倡议书
2014/04/14 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
付款承诺函范文
2015/01/21 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js