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 相关文章推荐
验证用户是否修改过页面的数据的实现方法
Sep 26 Javascript
Jquery焦点与失去焦点示例应用
Jun 10 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
Sep 06 Javascript
直接拿来用的页面跳转进度条JS实现
Jan 06 Javascript
原生js获取元素样式的简单方法
Aug 06 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
May 05 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
JavaScript两种计时器的实例讲解
Jan 31 Javascript
Vue通过WebSocket建立长连接的实现代码
Nov 05 Javascript
JS遍历树层级关系实现原理解析
Aug 31 Javascript
React配置子路由的实现
Jun 03 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
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
document.documentElement && document.documentElement.scrollTop
2007/12/01 Javascript
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
TensorFlow数据输入的方法示例
2018/06/19 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
使用Python实现牛顿法求极值
2020/02/10 Python
Django 返回json数据的实现示例
2020/03/05 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
Python内置函数及功能简介汇总
2020/10/13 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
法国珠宝店:CLEOR
2017/01/29 全球购物
函授毕业个人自我评价
2014/02/20 职场文书
学校课外活动总结
2014/05/08 职场文书
项目建议书模板
2014/05/12 职场文书
村庄环境整治方案
2014/05/15 职场文书
会计出纳岗位职责
2015/03/31 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
如何用python插入独创性声明
2021/03/31 Python
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers