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 相关文章推荐
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
Jul 31 Javascript
jquery实现文字由下到上循环滚动的实例代码
Aug 09 Javascript
JQuery中使用.each()遍历元素学习笔记
Nov 08 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
Angular Js文件上传之form-data
Aug 28 Javascript
理解jquery事件冒泡
Jan 03 Javascript
用js动态添加html元素,以及属性的简单实例
Jul 19 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
Aug 25 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
Feb 09 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
Mar 09 Javascript
Angular4学习之Angular CLI的安装与使用教程
Jan 04 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
Python Matplotlib库入门指南
2015/05/18 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
技校学生个人职业生涯规划范文
2014/03/03 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
出纳岗位职责范本
2015/03/31 职场文书
倡议书的格式写法
2015/04/28 职场文书
大学生暑假实习总结
2015/07/13 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
解析原生JS getComputedStyle
2021/05/25 Javascript