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 相关文章推荐
Prototype Hash对象 学习
Jul 19 Javascript
js控制网页背景音乐播放与停止的方法
Feb 06 Javascript
JavaScript中的Promise使用详解
Jun 24 Javascript
js+canvas绘制矩形的方法
Jan 28 Javascript
JS DOM实现鼠标滑动图片效果
Sep 17 Javascript
javascript加减乘除的简单实例
Jul 12 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
javascript 组合按键事件监听实现代码
Feb 21 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
AngularJS遍历获取数组元素的方法示例
Nov 11 Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 Javascript
vue 使用 canvas 实现手写电子签名
Mar 06 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
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
PHP中cookie知识点学习
2018/05/06 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
js判断空对象的实例(超简单)
2016/07/26 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
python多线程http下载实现示例
2013/12/30 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
Django继承自带user表并重写的例子
2019/11/18 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
考研复习计划
2015/01/19 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
PyTorch的Debug指南
2021/05/07 Python