webpack自动打包和热更新的实现方法


Posted in Javascript onJune 24, 2019

webpack常用配置

webpack dev server

  • 功能:自动打包文件
  • 配置dev server:在webpack.config.client.js中配置
const path = require('path');
  const HTMlPlugin = require('html-webpack-plugin');
  
  // 判断是否是开发环境
  const isDev = process.env.NODE_ENV === 'development'
  
  
  const config = {
    entry: {
      app: path.join(__dirname,'../client/app.js')
    },
    output: {
      filename: '[name].[hash].js',
      path: path.join(__dirname,'../dist'),
      publicPath: '/public'
    },
    module: {
      rules: [
        {
          test: /.jsx$/,
          loader: 'babel-loader'
        },
        {
          test: /.js$/,
          loader: 'babel-loader',
          exclude: [
            path.join(__dirname,'../node_modules')
          ]
        }
      ]
    },
    plugins:[
      new HTMlPlugin({
        template:path.join(__dirname,'../client/template.html')
      })
    ]
  }
  
  //新增
  if(isDev){
    // 开发环境
    config.devServer = {
      host: '0.0.0.0',//可以使用ip访问
      port:'8888',
      contentBase: path.join(__dirname,'../dist'),//打包后的文件
      overlay:{
        errors:true //直接在网页上显示错误
      },
      publicPath:'/public',
      historyApiFallback:{
        index:'/public/index.html'
      }
  
    }
  }
  module.exports = config;

在package.json中增加一条命令来进行自动打包

cross-env是为了兼容mac windows liunx的环境变量,需要安装。

npm install cross-env -D
"dev:client": "cross-env NODE_ENV=development webpack-dev-server --config build/webpack.config.client.js"

hot module replacemennt

功能:自动刷新页面

配置hot module:

安装react-hot-loader

npm install react-hot-loader -D

在webpack.config.client.js中配置

const webpack = require('webpack')
 if(isDev){
   config.entry ={
     app:[
       "react-hot-loader/patch",
       path.join(__dirname,'../client/app.js')
     ]
   }
   ...省略
   config.plugins.push(new webpack.HotModuleReplacementPlugin())
 }

在client/app.js中配置

...省略
 import { AppContainer } from 'react-hot-loader';
 const root = document.getElementById('root')
 const render = Component =>{
   aaa.hydrate(
     <AppContainer>
       <Component />
     </AppContainer>,
     root
   )
 }
 render(App)
 if(module.hot){
   module.hot.accept('./App.jsx',()=>{
     const NextApp = require('./App.jsx').default
     render(NextApp)
   })
 }

通过以上配置就能达到局部热更新了,修改代码,页面会实时修改,不会刷新页面了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js类的静态属性和实例属性的理解
Oct 01 Javascript
客户端 使用XML DOM加载json数据的方法
Sep 28 Javascript
JavaScript arguments 多参传值函数
Oct 24 Javascript
学习面向对象之面向对象的术语
Nov 30 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
Jan 11 Javascript
JQ获取动态加载的图片大小的正确方法分享
Nov 08 Javascript
解析Javascript中大括号“{}”的多义性
Dec 02 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
js表单登陆验证示例
Oct 19 Javascript
Angularjs自定义指令Directive详解
May 27 Javascript
js随机生成一个验证码
Jun 01 Javascript
js实现表格数据搜索
Aug 09 Javascript
Promise扫盲贴
Jun 24 #Javascript
深入学习js函数的隐式参数 arguments 和 this
Jun 24 #Javascript
前端天气插件tpwidget使用方法详解
Jun 24 #Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
Jun 24 #Javascript
JS实现给数组对象排序的方法分析
Jun 24 #Javascript
新手快速入门JavaScript装饰者模式与AOP
Jun 24 #Javascript
Electron + vue 打包桌面操作流程详解
Jun 24 #Javascript
You might like
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
Ext.MessageBox工具类简介
2009/12/10 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
jquery获取radio值实例
2014/10/16 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
英文自荐信范文
2015/03/25 职场文书
商场营业员岗位职责
2015/04/14 职场文书
不同意离婚代理词
2015/05/23 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
创业计划书之个人工作室
2019/08/22 职场文书