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 相关文章推荐
input 高级限制级用法
Mar 26 Javascript
js继承的实现代码
Aug 05 Javascript
js传参数受特殊字符影响错误的解决方法
Oct 21 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
Mar 03 Javascript
AngularJS控制器继承自另一控制器
May 09 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
Three.js学习之网格
Aug 10 Javascript
React学习笔记之条件渲染(一)
Jul 02 Javascript
jfinal与bootstrap的登出实战详解
Nov 27 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
JavaScript实现京东快递单号查询
Nov 30 Javascript
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
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
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
php实现等比例压缩图片
2018/07/26 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
python实现汉诺塔方法汇总
2016/07/25 Python
python合并同类型excel表格的方法
2018/04/01 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
大学生自我评价怎样写好
2013/10/23 职场文书
电子商务个人自荐信
2013/12/12 职场文书
教室布置标语
2014/06/26 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
单位推荐信范文
2015/03/27 职场文书
军训通讯稿范文
2015/07/18 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
灵能百分百第三季什么时候来?
2022/03/15 日漫