node.js - 使用 express + webpack 中间件时如何在 .ejs 更改时自动刷新浏览器?
问题描述
我已经使用 express 以及 webpack-dev-middleware 和 webpack-hot-middleware 设置了一个服务器,该服务器当前正在接受 .js 文件的模块替换。
这是我目前的设置:
server.js(后端)
const express = require('express');
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackHotMiddleware = require('webpack-hot-middleware');
const config = require('./webpack.config.js');
const compiler = webpack(config);
const app = express();
let port = 3000;
app.set('views', 'views')
app.set('view engine', 'ejs');
app.use(
express.static('public'),
webpackDevMiddleware(compiler, {publicPath: config.output.publicPath}),
webpackHotMiddleware(compiler)
);
app.get('/', (req, res) => {
res.render('home-guest');
})
app.listen(port);
webpack.config.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: [
'./public/app.js',
'webpack-hot-middleware/client?reload=true'
],
mode: 'development',
output: {
filename: 'bundled.js',
path: path.resolve(__dirname, 'public'),
publicPath: '/',
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
]
}
app.js(前端)
if(module.hot){
module.hot.accept();
}
alert('Testing');
home-guest.ejs(查看)
Welcome to the app.
<script src="bundled.js"></script>
对文件所做的所有更改app.js
都正确使用 HMR,即时替换,无需刷新页面。
但是,要查看home-guest.ejs
文件的更改,我必须手动刷新页面。
我知道为了可视化 .ejs 文件的更改,我确实需要刷新。我想做的是让服务器在检测到 .ejs 文件发生更改时自动为我刷新页面。
解决方案
推荐阅读
- java - 与java的smtp连接前景
- javascript - Chart.js 2.7.2-多行获取点值onClick
- java - 如何对地图进行排序和编辑?
- java - 查找和更改数组 Java OOP 的索引
- typescript - 使用 Jest/Typescript 和虚拟函数测试 fs 库函数
- ruby - Mongodb ruby 驱动:编辑 Collection::View 实例过滤器
- javascript - 合并 UI Grid 中的特定列
- php - nginx + php-fpm 产生 300ms 开销
- css - 如何将表单字段与文本内联?
- c# - 如果在加载时更改内容,则 StackPanel 中的 WPF 标签不会调整大小