webpack 热替换
一. 使用express.js搭建一个简易服务器demo地址,热替换的
先看包
// 清除重复的文件
"clean-webpack-plugin"
// css加载器
"css-loader"
// node框架
"express"
// 自动加载模板和js
"html-webpack-plugin"
// style加载器
"style-loader"
// 局部的webpack
"webpack"
// 局部的webpack-cli
"webpack-cli"
// 开发的中间件
"webpack-dev-middleware"
// 热替换的中间件
"webpack-hot-middleware"
下载完了之后,编写webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const webpack = require('webpack');
module.exports = {
// 必须是数组,后面会添加进来东西
entry: ['./src/index.js'],
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
devtool: 'inline-source-map',
devServer: {
contentBase: './dist',
hot: true,
},
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
},
plugins: [
// 名字改变
new webpack.NamedModulesPlugin(),
// 模块替换
new webpack.HotModuleReplacementPlugin(),
// 清理插件
new CleanWebpackPlugin(),
// 自动加载
new HtmlWebpackPlugin({
title: 'Development',
template: './index.html'
})
],
};
再来开发server.js
const express = require('express');
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackHotMiddleware = require('webpack-hot-middleware');
const app = express();
// 引入配置
const config = require('./webpack.config.js');
const compiler = webpack(config);
// 加入入口文件
config.entry.unshift(
'webpack-hot-middleware/client?reload=true',
)
// express app这里是用use使用中间件,接受一个函数
// 通知webpack-dev-middleware
app.use(webpackDevMiddleware(compiler, {
publicPath: config.output.publicPath,
noInfo: true,
hot: true,
inline: true,
}));
app.use(webpackHotMiddleware(compiler));
app.listen(3000, function () {
console.log('Example app listening on port 3000!\n');
});
在package.json中 添加
"scripts": {
"start": "node server"
},
最后 yarn start
localhost:3000
可以看到效果
源码: node-server demo
二. 使用 webpack 搭建一个简单的热替换服务器 demo 地址 热替换
package.json
"clean-webpack-plugin";
"css-loader";
"html-webpack-plugin";
"style-loader";
"webpack";
"webpack-cli";
// 加入webpack自带的服务器插件
"webpack-dev-server";
webpack.config.js 中添加
devServer: {
contentBase: './dist',
hot: true,
},
plugins: [
new webpack.NamedModulesPlugin(),
new webpack.HotModuleReplacementPlugin(),
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
title: 'Development',
template: './index.html'
})
],
最后 package.json
"scripts": {
"start": "webpack-dev-server --config"
},
yarn start
localhost:8080
webpack 热替换的更多相关文章
- vue+webpack热替换
项目地址:http://pan.baidu.com/s/1i5KCXBf 今天上午和同事完成了在mac上面调试了我的框架,最后发现问题出在window系统和mac系统在表示路径的时候出现问题,在解决这 ...
- webpack热替换原理
前期准备: const path = require('path'); const HtmlWebpackPlugin= require('html-webpack-plugin'); const C ...
- 【webpack】-- 模块热替换
全称是Hot Module ReplaceMent(HMR),理解成热模块替换或者模块热替换都可以吧,和.net中的热插拔一个意思,就是在运行中对程序的模块进行更新.这个功能主要是用于开发过程中,对生 ...
- Webpack 开发工具与模块热替换
Webpack 开发工具与模块热替换 ⚠️ 注意: 永远不要在生产环境中使用这些工具,永远不要. devtool 当 JavaScript 异常抛出时,你常会想知道这个错误发生在哪个文件的哪一行.然 ...
- 【webpack学习笔记】a05-模块热替换
什么是模块热替换? 这个功能会在程序运行过程中替换.添加或删除模块,而无需重新加载整个页面 有什么用呢? 保留在完全重新加载页面时丢失的应用程序状态. 只更新变更内容,以节省宝贵的开发时间. 调整样式 ...
- 启用 webpack 的模块热替换特性
启用 webpack 的模块热替换特性: module.exports = { //... devServer: { hot: true } } 注意,必须有 webpack.HotModuleRep ...
- webpack学习_模块热替换(Hot Module Peaplacement)
模块热替换(Hot Module Replacement 或 HMR) 是webpack提供的最有用的功能之一.允许在u女性是更新各种模块,而无需进行完全刷新. 启用HMR 承接之前的代码 webpa ...
- webpack 模块热替换的理解和使用
模块热替换(webpack文档上也叫 Hot Module Replacement 或 HMR)是 webpack 提供的最有用的功能之一.它允许在运行时更新各种模块,而无需进行完全刷新. 这句话其实 ...
- Webpack探索【8】--- 模块热替换详解
本文主要讲模块热替换相关内容.
随机推荐
- Ansible部署zabbix-agent
playbook目录 zabbix/ ├── hosts ##定义的主机列表 ├── install_zabbix_agent.yml ##安装入口文件 └── roles ├── install_z ...
- CentOS6.5安装Oracle11g
安装前必读: 1. 安装Oracle的虚拟机需要固定IP. 2. 注意安装过程中root用户与oracle用户的切换(su root/su oracle) 3. 环境变量 ...
- Maven——软件开发中一个神奇的项目管理工具
由于本人是从c++转入从事JAVA工作的 所以很多东西要从头学起,相信有很多跟我一样的人吧,那么我们一起来学习. 今天我们一起来认识下Maven这个工具,很多人可能会问题了,为什么说是工具呢?不是写代 ...
- Python模块_import语句_from...import 函数名_from ... import *
Python模块:包含了所有定义的函数和变量的文件,后缀名为 .py 将某些方法存放在文件中,当某些脚本 或 交互式需要使用的时候,导入进去. 导入的文件,就称为模块.导入之后就可以使用导入的文件的函 ...
- 运行过程中给类添加方法 types.MethodType
class Person(object): def __init__(self,name = None,age = None): self.name = name#类中拥有的属性 self.age = ...
- PHP levenshtein() 函数
实例 计算两个字符串之间的 Levenshtein 距离: <?php echo levenshtein("Hello World","ello World&quo ...
- PDOStatement::getAttribute
PDOStatement::getAttribute — 检索一个语句属性(PHP 5 >= 5.1.0, PECL pdo >= 0.2.0)高佣联盟 www.cgewang.com 说 ...
- IEnumerable<T>转DataTable,为空怎么办?
public static class DataConvertor { public static DataTable ToDataTable<T>(IEnumerable<T> ...
- property补充
property补充 # class Foo: # @property # def AAA(self): # print('get的时候运行我啊') # # @AAA.setter # def AAA ...
- 关键字Run Keyword If 如何写多个条件语句、如何在一个条件下执行多个关键字
Run Keyword If 关键字给出的示例是: 但是,这往往不能满足我们实际需要,比如,我们需要同时判断多个条件是否成立,或者在条件成立时我们想要执行多个关键字,虽然可以进行封装再调用,但是比较麻 ...