详解如何用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 插件实现图片延迟加载效果代码
Feb 06 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
Aug 16 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
May 19 Javascript
js创建表单元素并使用submit进行提交
Aug 14 Javascript
总结JavaScript设计模式编程中的享元模式使用
May 21 Javascript
JS获取和修改元素样式的实例代码
Aug 06 Javascript
js上传图片预览的实现方法
May 09 Javascript
js 获取json数组里面数组的长度实例
Oct 31 Javascript
浅谈AngularJS中$http服务的简单用法
May 15 Javascript
vue项目部署到Apache服务器中遇到的问题解决
Aug 24 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
Dec 13 Javascript
React精髓!一篇全概括小结(急速)
May 23 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警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
koa-router源码学习小结
2018/09/07 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python fabric使用笔记
2015/05/09 Python
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
Python延时操作实现方法示例
2018/08/14 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
大学毕业生自我鉴定
2013/11/05 职场文书
师范应届毕业生自荐信
2013/11/18 职场文书
抄作业检讨书
2014/02/17 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
大学生毕业个人总结
2015/02/15 职场文书
文艺演出主持词
2015/07/01 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python
logback如何自定义日志存储
2021/08/30 Java/Android