详解如何用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 相关文章推荐
打造基于jQuery的高性能TreeView(asp.net)
Feb 23 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
Jan 14 Javascript
node.js中的fs.fchown方法使用说明
Dec 16 Javascript
Javascript动画的实现原理浅析
Mar 02 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
微信小程序 简单教程实例详解
Jan 13 Javascript
整理关于Bootstrap列表组的慕课笔记
Mar 29 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
Nov 15 Javascript
vue-router beforeEach跳转路由验证用户登录状态
Dec 26 Javascript
配置eslint规范项目代码风格
Mar 11 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 Javascript
原生js中运算符及流程控制示例详解
Jan 05 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 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
js 匿名调用实现代码
2009/06/19 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
python监控进程脚本
2018/04/12 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
python 把列表转化为字符串的方法
2018/10/23 Python
pandas数据集的端到端处理
2019/02/18 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
python 实现简易的记事本
2020/11/30 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
老师自我鉴定范文
2013/12/25 职场文书
采购主管岗位职责
2014/02/01 职场文书
班组长岗位职责
2014/03/03 职场文书
家长会主持词
2014/03/26 职场文书
物理教育专业求职信
2014/06/25 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
学生逃课检讨书
2015/02/17 职场文书
Django实现聊天机器人
2021/05/31 Python