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实现弹出窗口、页面变成灰色并不可操作的例子分享
May 10 Javascript
关于javaScript注册click事件传递参数的不成功问题
Jul 18 Javascript
js面向对象之静态方法和静态属性实例分析
Jan 10 Javascript
angular.js之路由的选择方法
Sep 24 Javascript
jquery表单提交带错误信息提示效果
Mar 09 Javascript
SpringMVC+bootstrap table实例详解
Jun 02 Javascript
JavaScript判断输入是否为数字类型的方法总结
Sep 28 Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 Javascript
利用pm2部署多个node.js项目的配置教程
Oct 22 Javascript
100行代码实现vue表单校验功能(小白自编)
Nov 19 Javascript
js实现双色球效果
Aug 02 Javascript
Vue表单提交点击事件只允许点击一次的实例
Oct 23 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
什么是短波收听SWL
2021/03/01 无线电
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
CI框架中zip类应用示例
2014/06/17 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
表单提交验证类
2006/07/14 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
大学生文员专业个人求职信范文
2014/01/05 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
如何做好工作总结!
2019/04/10 职场文书
教你一步步实现一个简易promise
2021/11/02 Javascript