详解如何用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 contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
基于Jquery的跨域传输数据(JSONP)
Mar 10 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 Javascript
jQuery模拟超链接点击效果代码
Apr 21 Javascript
JavaScript和CSS通过expression实现Table居中显示
Jun 28 Javascript
js实现可得到不同颜色值的颜色选择器实例
Feb 28 Javascript
高性能JavaScript 重排与重绘(2)
Aug 11 Javascript
JavaScript动态添加事件之事件委托
Jul 12 Javascript
Ajax使用原生态JS验证用户名是否存在
May 26 Javascript
layui-table对返回的数据进行转变显示的实例
Sep 04 Javascript
原生js实现滑块区间组件
Jan 20 Javascript
Vue中插槽slot的使用方法与应用场景详析
Jun 08 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
substr()函数中文版
2006/10/09 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
删除节点的jquery代码
2014/01/13 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python检测网络延迟的代码
2018/05/15 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
python解释器安装教程的方法步骤
2020/07/02 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
董事长秘书职责
2014/01/31 职场文书
2014年库房工作总结
2014/11/26 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
Python快速实现一键抠图功能的全过程
2021/06/29 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS