欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-14 15:48:53
前言 在我们开发的过程中,我们会使用webpack-dev-server实现自动刷新,webpack-dev-server会把编译后的文件全部保存在内存里,而不会写入到文...

前言

在我们开发的过程中,我们会使用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 || 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(`server listening on http://localhost:${port}, ctrl+c to stop`)
})

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

总结

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