首页 > 开发 > JS > 正文

webpack结合express实现自动刷新的方法

2024-05-06 16:50:35
字体:
来源:转载
供稿:网友

前言

在我们开发的过程中,我们会使用webpack-dev-server实现自动刷新,webpack-dev-server会把编译后的文件全部保存在内存里,而不会写入到文件目录内。但当我们的开发是前端和后端在一个项目里的时候就不行了。我们可以使用webpack结合express实现自动编译刷新

配置webpack

首先就是配置webpack的配置。新建一个webpack.config.js文件

const path = require('path')const webpack = require('webpack')var hotMiddlewareScript = 'webpack-hot-middleware/client'module.exports = { entry: {  main: ['./src/main.js', hotMiddlewareScript] }, mode: 'development', output: {  path: path.resolve(__dirname, 'public'),  filename: 'js/[name].js',  publicPath: '/' }, resolve: {  extensions: ['.js'] }, plugins: [  new webpack.optimize.OccurrenceOrderPlugin(),  new webpack.HotModuleReplacementPlugin(),  new webpack.NoEmitOnErrorsPlugin() ]}

我们这里需要关注的是,每个entry后都要增加一个hotMiddlewareScript,还有就是增加3个插件
首先新建一个webpack.middleware文件,这里我们需要用到webpack-dev-middleware和 webpack-hot-middleware两个中间件。

const webpack = require('webpack')const webpackDevMiddleware = require('webpack-dev-middleware')const webpackHotMiddleware = require('webpack-hot-middleware')const webpackConfig = require('./webpack.config')module.exports = app => { let compiler = webpack(webpackConfig) app.use(webpackDevMiddleware(compiler, {  publicPath: '/',  stats: {   colors: true,   chunks: false  } })) app.use(webpackHotMiddleware(compiler)) }

注意:webpack-dev-middleware和webpack-hot-middleware的静态资源服务仅仅用于开发环境。到了生产环境,应该使用express.static()。

下面编写express代码

const express = require('express')const bodyParser = require('body-parser')const {resolve} = require('path')const webpackMiddleware=require('./webpack.middleware')const router = express.Router()const app=express()const port = process.env.PORT || 3000webpackMiddleware(app)app.use(express.static(resolve(__dirname,'./public')))app.use(bodyParser.json())app.use(bodyParser.urlencoded({ extended: true }))// ...代码app.use(router)app.listen(port, () => { console.log(`Server listening on http://localhost:${port}, Ctrl+C to stop`)})

这样,我们在开发的时候,前端和后端都在同一个服务里运行了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对VeVb武林网的支持。


注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表