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 相关文章推荐
拖动一个HTML元素
Dec 22 Javascript
javascript进行四舍五入方法汇总
Dec 16 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
javascript实现获取服务器时间
May 19 Javascript
javaScript中push函数用法实例分析
Jun 08 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
js实现淡入淡出轮播切换功能
Jan 13 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
Jan 24 Javascript
Vue中"This dependency was not found"问题的解决方法
Jun 19 Javascript
layUI实现三级导航菜单效果
Jul 26 Javascript
vue制作抓娃娃机的示例代码
Apr 17 Javascript
jquery实现点击左右按钮切换图片
Jan 27 jQuery
记录一次开发微信网页分享的步骤
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
Apache设置虚拟WEB
2006/10/09 PHP
NO3第三帝国留言簿制作过程
2006/10/09 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
PHP生成plist数据的方法
2015/06/16 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
全面解读Python Web开发框架Django
2014/06/30 Python
对python模块中多个类的用法详解
2019/01/10 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
详解python深浅拷贝区别
2019/06/24 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
实习生个人的自我评价
2013/12/08 职场文书
文明之星事迹材料
2014/05/09 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
毕业生见习报告总结
2014/11/08 职场文书
职位证明模板
2015/06/23 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书