详解如何用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 相关文章推荐
jscript之Read an Excel Spreadsheet
Jun 13 Javascript
js类后台管理菜单类-MenuSwitch
Sep 12 Javascript
jQuery的运行机制和设计理念分析
Apr 05 Javascript
jQuery $.data()方法使用注意细节
Dec 31 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
Jan 12 Javascript
Javascript中this绑定的3种方法与比较
Oct 13 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
Dec 12 Javascript
Angular 容器部署的方法
Apr 17 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
Jan 30 Javascript
vue router导航守卫(router.beforeEach())的使用详解
Apr 19 Javascript
vue单页应用的内存泄露定位和修复问题小结
Aug 02 Javascript
vue组件vue-esign实现电子签名
Apr 21 Vue.js
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检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
php分页示例分享
2014/04/30 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
php微信公众号开发之简答题
2018/10/20 PHP
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
Async/Await替代Promise的6个理由
2019/06/15 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python保存文件方法小结
2018/07/27 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
Django框架验证码用法实例分析
2019/05/10 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
专业实习自我鉴定
2013/10/29 职场文书
毕业生个人求职信范文分享
2014/01/05 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
综治工作汇报材料
2014/10/27 职场文书
2014年党支部工作总结
2014/11/13 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
win10更新失败无限重启解决方法
2022/04/19 数码科技
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android