webpack結(jié)合express實(shí)現(xiàn)自動(dòng)刷新的方法
前言
在我們開(kāi)發(fā)的過(guò)程中,我們會(huì)使用webpack-dev-server實(shí)現(xiàn)自動(dòng)刷新,webpack-dev-server會(huì)把編譯后的文件全部保存在內(nèi)存里,而不會(huì)寫入到文件目錄內(nèi)。但當(dāng)我們的開(kāi)發(fā)是前端和后端在一個(gè)項(xiàng)目里的時(shí)候就不行了。我們可以使用webpack結(jié)合express實(shí)現(xiàn)自動(dòng)編譯刷新
配置webpack
首先就是配置webpack的配置。新建一個(gè)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()
]
}
我們這里需要關(guān)注的是,每個(gè)entry后都要增加一個(gè)hotMiddlewareScript,還有就是增加3個(gè)插件
首先新建一個(gè)webpack.middleware文件,這里我們需要用到webpack-dev-middleware和 webpack-hot-middleware兩個(gè)中間件。
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的靜態(tài)資源服務(wù)僅僅用于開(kāi)發(fā)環(huán)境。到了生產(chǎn)環(huán)境,應(yīng)該使用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`)
})
這樣,我們?cè)陂_(kāi)發(fā)的時(shí)候,前端和后端都在同一個(gè)服務(wù)里運(yùn)行了
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Autocomplete Textbox Example javascript實(shí)現(xiàn)自動(dòng)完成成功
Autocomplete Textbox Example javascript實(shí)現(xiàn)自動(dòng)完成成功...2007-08-08
Windows Live的@live.com域名注冊(cè)漏洞 利用代碼
Windows Live的@live.com域名注冊(cè)漏洞 利用代碼...2006-12-12
javascript數(shù)字驗(yàn)證的實(shí)例代碼(推薦)
下面小編就為大家?guī)?lái)一篇javascript數(shù)字驗(yàn)證的實(shí)例代碼(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
javascript實(shí)現(xiàn)的簡(jiǎn)單的表單驗(yàn)證
這篇文章主要介紹了javascript實(shí)現(xiàn)的簡(jiǎn)單的表單驗(yàn)證的相關(guān)資料,需要的朋友可以參考下2015-07-07
CORS cross-origin resourse sharing跨域資源共享解決
這篇文章主要為大家介紹了CORS cross-origin resourse sharing跨域資源共享的解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
JavaScript JSON.stringify()的使用總結(jié)
JSON是一種輕量級(jí)數(shù)據(jù)格式,可以方便地表示復(fù)雜數(shù)據(jù)結(jié)構(gòu)。JSON對(duì)象有兩個(gè)方法:stringify()和parse()。在簡(jiǎn)單的情況下,這兩個(gè)方法分別可以將JavaScript序列化為JSON字符串,以及將JSON解析為原生JavaScript值。本文著重介紹JSON.stringify()的使用方法和注意事項(xiàng)。2021-05-05
JS解決position:sticky的兼容性問(wèn)題的方法
本篇文章主要介紹了JS解決position:sticky的兼容性問(wèn)題的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10

