详解如何用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 按回车键相应按钮提交事件
Nov 02 Javascript
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
JavaScript代码复用模式实例分析
Dec 02 Javascript
Javascript操作URL函数修改版
Nov 07 Javascript
验证控件与Button的OnClientClick事件详细解析
Dec 04 Javascript
类似天猫商品详情随浏览器移动的示例代码
Feb 27 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
May 12 Javascript
超实用的JavaScript代码段 附使用方法
May 22 Javascript
利用Vue v-model实现一个自定义的表单组件
Apr 27 Javascript
vue中rem的配置的方法示例
Aug 30 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 Javascript
使用jquery实现轮播图效果
Jan 02 jQuery
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 8小时时间差的解决方法小结
2009/12/22 PHP
php中的动态调用实例分析
2015/01/07 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
jQuery 渐变下拉菜单
2009/12/15 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
Python实现测试磁盘性能的方法
2015/03/12 Python
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
教师研修随笔感言
2014/01/23 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
食品工程专业求职信
2014/06/15 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
行政复议答复书
2015/07/01 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书