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 图片轮换效果
Jul 29 Javascript
jquery网页元素拖拽插件效果及实现
Aug 05 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
浅析JavaScript原型继承的陷阱
Dec 03 Javascript
js 判断浏览器使用的语言示例代码
Mar 22 Javascript
微信小程序 LOL 英雄介绍开发实例
Sep 30 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
微信小程序调用摄像头隐藏式拍照功能
Aug 22 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
Aug 31 Javascript
axios实现简单文件上传功能
Sep 25 Javascript
uniapp,微信小程序中使用 MQTT的问题
Jul 11 Javascript
移动端JS实现拖拽两种方法解析
Oct 12 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 不使用js实现页面跳转
2014/02/11 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
python基础之入门必看操作
2017/07/26 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
python3 pygame实现接小球游戏
2019/05/14 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
python实现XML解析的方法解析
2019/11/16 Python
如何提高python 中for循环的效率
2020/04/15 Python
工作检讨书500字
2014/10/19 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
新闻稿件写作技巧
2015/07/18 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python
Java 写一个简单的图书管理系统
2022/04/26 Java/Android
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL