webpack结合express实现自动刷新的方法
前言
在我们开发的过程中,我们会使用webpack-dev-server实现自动刷新,webpack-dev-server会把编译后的文件全部保存在内存里,而不会写入到文件目录内。但当我们的开发是前端和后端在一个项目里的时候就不行了。我们可以使用webpack结合express实现自动编译刷新
配置webpack
首先就是配置webpack的配置。新建一个webpack.config.js文件
constpath=require('path') constwebpack=require('webpack') varhotMiddlewareScript='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:[ newwebpack.optimize.OccurrenceOrderPlugin(), newwebpack.HotModuleReplacementPlugin(), newwebpack.NoEmitOnErrorsPlugin() ] }
我们这里需要关注的是,每个entry后都要增加一个hotMiddlewareScript,还有就是增加3个插件
首先新建一个webpack.middleware文件,这里我们需要用到webpack-dev-middleware和webpack-hot-middleware两个中间件。
constwebpack=require('webpack') constwebpackDevMiddleware=require('webpack-dev-middleware') constwebpackHotMiddleware=require('webpack-hot-middleware') constwebpackConfig=require('./webpack.config') module.exports=app=>{ letcompiler=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代码
constexpress=require('express') constbodyParser=require('body-parser') const{resolve}=require('path') constwebpackMiddleware=require('./webpack.middleware') constrouter=express.Router() constapp=express() constport=process.env.PORT||3000 webpackMiddleware(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(`Serverlisteningonhttp://localhost:${port},Ctrl+Ctostop`) })
这样,我们在开发的时候,前端和后端都在同一个服务里运行了
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。