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 相关文章推荐
延时重复执行函数 lLoopRun.js
May 08 Javascript
javascript 日期常用的方法
Nov 11 Javascript
JS 对输入框进行限制(常用的都有)
Jul 30 Javascript
Javascript合并表格中具有相同内容单元格示例
Aug 11 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
May 17 Javascript
轻松掌握JavaScript装饰者模式
Aug 27 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
Nov 17 Javascript
Angular4学习教程之HTML属性绑定的方法
Jan 04 Javascript
vue实现多级菜单效果
Oct 19 Javascript
vue动态禁用控件绑定disable的例子
Oct 28 Javascript
微信小程序自定义联系人弹窗
May 26 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
Jul 15 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的十大要点(上)
2009/02/04 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
python 字符串格式化代码
2013/03/17 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python编写Logistic逻辑回归
2020/12/30 Python
python实现多张图片拼接成大图
2019/01/15 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
Python生成器常见问题及解决方案
2020/03/21 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
导致python中import错误的原因是什么
2020/07/01 Python
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
教育合作协议范本
2014/10/17 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
青岛导游词
2015/02/12 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript