详解如何用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 相关文章推荐
js中的escape及unescape函数的php实现代码
Sep 04 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
Aug 15 Javascript
js实现发送验证码后的倒计时功能
May 28 Javascript
通用无限极下拉菜单的实现代码
May 31 Javascript
你不知道的 javascript【推荐】
Jan 08 Javascript
浅谈js for循环输出i为同一值的问题
Mar 01 Javascript
Mongoose实现虚拟字段查询的方法详解
Aug 15 Javascript
详谈DOM简介及节点、属性、查找节点的方法
Nov 16 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
Oct 29 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
Feb 15 jQuery
如何使用Jquery动态生成二级选项列表
Feb 06 jQuery
JavaScript中遍历的十种方法总结
Dec 15 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错误提示的关闭方法详解
2013/06/23 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
python 实现插入排序算法
2012/06/05 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
毕业学生推荐信
2013/12/01 职场文书
校园文化建设方案
2014/02/03 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
经典毕业生求职信
2014/07/12 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
英镑符号 £
2022/02/17 杂记