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 相关文章推荐
js实现网站首页图片滚动显示
Feb 04 Javascript
web前端开发JQuery常用实例代码片段(50个)
Aug 28 Javascript
浅谈jquery中next与siblings的区别
Oct 27 Javascript
自学实现angularjs依赖注入
Dec 20 Javascript
JS中用try catch对代码运行的性能影响分析
Dec 26 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
Mar 01 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
Aug 14 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
Oct 19 Javascript
vue组件中的样式属性scoped实例详解
Oct 30 Javascript
jQuery表单选择器用法详解
Aug 22 jQuery
vue element upload组件 file-list的动态绑定实现
Oct 11 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
用cookies来跟踪识别用户
2006/10/09 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
Python入门篇之列表和元组
2014/10/17 Python
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
python对execl 处理操作代码
2020/06/22 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
暇步士官网:Hush Puppies
2016/09/22 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
销售人员获奖感言
2014/02/05 职场文书
环保倡议书100字
2014/05/15 职场文书
离婚协议书范文2015
2015/01/26 职场文书
广播体操比赛主持词
2015/06/29 职场文书
如何写好竞聘报告
2019/04/03 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python