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读取ASP设定的COOKIE
Nov 24 Javascript
Js 本页面传值实现代码
May 17 Javascript
jQuery中jqGrid分页实现代码
Nov 04 Javascript
jQuery源码分析之jQuery中的循环技巧详解
Sep 06 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
Dec 19 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
Dec 26 Javascript
jQuery表单元素选择器代码实例
Feb 06 Javascript
仿ElementUI实现一个Form表单的实现代码
Apr 23 Javascript
详解在HTTPS 项目中使用百度地图 API
Apr 26 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
Dec 04 Javascript
基于javascript处理nginx请求过程详解
Jul 07 Javascript
vue循环中点击选中再点击取消(单选)的实现
Sep 10 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把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
javscript对象原型的一些看法
2010/09/19 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
Python实现的简单发送邮件脚本分享
2014/11/07 Python
python实现简单ftp客户端的方法
2015/06/28 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
机关单位人员学雷锋心得体会
2014/03/10 职场文书
导游词格式
2015/02/13 职场文书
办公室个人总结
2015/02/28 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python