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


Posted in Javascript onMay 07, 2019

前言

在我们开发的过程中,我们会使用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`)
})

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

总结

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

Javascript 相关文章推荐
javascript之ESC(第二类混淆)
May 06 Javascript
Document对象内容集合(比较全)
Sep 06 Javascript
JavaScript包装对象使用介绍
Aug 29 Javascript
css结合js制作下拉菜单示例代码
Feb 27 Javascript
javascript中Function类型详解
Apr 28 Javascript
jQuery实现级联下拉框实战(5)
Feb 08 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
Feb 15 Javascript
Node.js读取文件内容示例
Mar 07 Javascript
JavaScript基础教程之如何实现一个简单的promise
Sep 11 Javascript
Vue在页面数据渲染完成之后的调用方法
Sep 11 Javascript
Vue利用History记录上一页面的数据方法实例
Nov 02 Javascript
vue引用外部JS的两种种方法
Jan 28 Javascript
记录一次开发微信网页分享的步骤
May 07 #Javascript
Vue 幸运大转盘实现思路详解
May 06 #Javascript
Vue运用transition实现过渡动画
May 06 #Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
May 06 #Javascript
vue路由跳转传参数的方法
May 06 #Javascript
如何获取vue单文件自身源码路径
May 06 #Javascript
详解vue-cli中使用rem,vue自适应
May 06 #Javascript
You might like
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
JavaScript中Function详解
2015/02/27 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
Angularjs---项目搭建图文教程
2016/07/08 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
什么叫做SQL注入,如何防止
2016/10/04 面试题
入党自我鉴定范文
2013/10/04 职场文书
团员的自我评价
2013/12/01 职场文书
拖鞋店创业计划书
2014/01/15 职场文书
党员组织关系介绍信
2014/02/13 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
运动会入场口号
2014/06/07 职场文书
医院科室评语
2015/01/04 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python
TS 类型兼容教程示例详解
2022/09/23 Javascript