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下function声明一些小结
Dec 28 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
Sep 08 Javascript
js怎么判断flash swf文件是否加载完毕
Aug 14 Javascript
基于Css3和JQuery实现打字机效果
Aug 11 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
Jun 12 Javascript
bootstrap Table的一些小操作
Nov 01 Javascript
node.js文件上传重命名以及移动位置的示例代码
Jan 19 Javascript
Vue 全局loading组件实例详解
May 29 Javascript
JavaScript实现数字前补“0”的五种方法示例
Jan 03 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
Sep 01 Javascript
解决layui的radio属性或别的属性没显示出来的问题
Sep 26 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
酒店经理职责
2014/01/30 职场文书
党员个人总结自评
2015/02/14 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL