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 相关文章推荐
javascript 多级checkbox选择效果
Aug 20 Javascript
ie focus bug 解决方法
Sep 03 Javascript
javascript 广告后加载,加载完页面再加载广告
Nov 25 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
Apr 15 Javascript
Knockout visible绑定使用方法
Nov 15 Javascript
javascript日期验证之输入日期大于等于当前日期
Dec 13 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
May 03 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
May 07 Javascript
jQuery中的deferred对象和extend方法详解
May 08 jQuery
js时间戳与日期格式之间相互转换
Dec 11 Javascript
Vue 父子组件的数据传递、修改和更新方法
Mar 01 Javascript
详解微信小程序开发用户授权登陆
Apr 24 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
PHP 和 MySQL 基础教程(一)
2006/10/09 PHP
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
php中autoload的用法总结
2013/11/08 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
使用js实现数据格式化
2014/12/03 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
python2.7到3.x迁移指南
2018/02/01 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
python实现维吉尼亚加密法
2019/03/20 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
Python实现代码块儿折叠
2020/04/15 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
中文专业毕业生自荐书范文
2014/01/04 职场文书
委托证明的格式
2014/01/10 职场文书
安全教育实施方案
2014/03/02 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL