详解如何用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 面向对象 继承
May 13 Javascript
Javascript实现滑块滑动改变值的实现代码
Apr 12 Javascript
在表单提交前进行验证的几种方式整理
Jul 31 Javascript
jquery等待效果示例
May 01 Javascript
JS实现文字向下滚动完整实例
Feb 06 Javascript
javascript实现10个球随机运动、碰撞实例详解
Jul 08 Javascript
jquery实现页面虚拟键盘特效
Aug 08 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
May 30 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
Jul 01 Javascript
教你如何在Node.js中使用jQuery
Aug 28 Javascript
Vue.js bootstrap前端实现分页和排序
Mar 10 Javascript
JS算法题之查找数字在数组中的索引位置
May 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不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
深入理解vue中的$set
2017/06/01 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
Python生成密码库功能示例
2017/05/23 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
Python下载网络小说实例代码
2018/02/03 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
Python如何实现线程间通信
2020/07/30 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
军训自我鉴定100字
2014/02/13 职场文书
开工仪式策划方案
2014/05/23 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
python神经网络 使用Keras构建RNN训练
2022/05/04 Python