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 new 需不需要继续使用
Jul 02 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
Bootstrap模块dropdown实现下拉框响应
May 22 Javascript
js创建对象几种方式的优缺点对比
Sep 28 Javascript
Express之get,pos请求参数的获取
May 02 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
Feb 26 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
Jul 25 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
Nov 21 Javascript
vuex实现及简略解析(小结)
Mar 01 Javascript
从理论角度讨论JavaScript闭包
Apr 03 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
jquery插件实现图片悬浮
Apr 16 jQuery
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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
改造一台复古桌面收音机
2021/03/02 无线电
CodeIgniter中实现泛域名解析
2014/07/19 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
2011/04/24 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
python去除字符串中的换行符
2017/10/11 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
大学生应聘推荐信范文
2013/11/19 职场文书
大学生团日活动总结
2015/05/06 职场文书
导游词之神仙居景区
2019/11/15 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers