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 相关文章推荐
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
Mar 28 Javascript
jQuery代码优化 事件委托篇
Nov 01 Javascript
HTML上传控件取消选择
Mar 06 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
Mar 17 Javascript
javascript实现的一个带下拉框功能的文本框
May 08 Javascript
jQuery打印图片pdf、txt示例代码
Jul 22 Javascript
js事件监听器用法实例详解
Jun 01 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
Nov 02 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
Jul 17 Javascript
JavaScript代码实现简单计算器
Dec 27 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
论坛头像随机变换代码
2006/10/09 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
浅谈js中的this问题
2017/08/31 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
python实现各进制转换的总结大全
2017/06/18 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python中bytes和str类型的区别
2019/10/21 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
庆七一活动方案
2014/01/25 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
学习方法演讲稿
2014/05/10 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
实习工作表现评语
2014/12/31 职场文书
培根随笔读书笔记
2015/07/01 职场文书
企业宣传语大全
2015/07/13 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
酒店厨房管理制度
2015/08/06 职场文书
2016猴年春节慰问信
2015/11/30 职场文书
Pandas数据类型之category的用法
2021/06/28 Python