详解如何用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 相关文章推荐
JavaScript Prototype对象
Jan 07 Javascript
Javascript基础知识(一)核心基础语法与事件模型
Sep 29 Javascript
JavaScript中的fontsize()方法使用详解
Jun 08 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
Jan 27 Javascript
浅析JS操作DOM的一些常用方法
May 13 Javascript
JS字符串按逗号和回车分隔的方法
Apr 25 Javascript
Vue 滚动行为的具体使用方法
Sep 13 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
ES6顶层对象、global对象实例分析
Jun 14 Javascript
Vue v-bind动态绑定class实例方法
Jan 15 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
Feb 25 Javascript
vue 单页应用和多页应用的优劣
Oct 22 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怎样调用MSSQL的存储过程
2006/10/09 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
Python实现图片识别加翻译功能
2019/12/26 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
农村党员一句话承诺
2014/05/30 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
三峡导游词
2015/01/31 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书