webpack配置之後端渲染詳解

webpack配置之後端渲染詳解
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

webpack配置之後端渲染2017年, vue, react, angular 已經佔據前端的主流, 不得不承認這也是前端的未來發展方向. 但是後端渲染的開發方式仍然很常見, 不管是個人專案還是商業專案, 後端渲染搞起來真是糙猛快. 但是藉著前端發展的東風, 後端渲染也有很大的改進空間. 這裡就介紹一下我自己的實踐經驗: 前後端不分離的情況下實現熱載入以及一定程度下的前端主導開發. 這裡以koa為例, 但是倉庫裡也有django版. 理論上所有語言都可以實現. 有興趣可以看下, 倉庫地址在文末.

效果圖

原理

原理說起來還是很簡單的:

1、獨立啟動靜態資源伺服器打包生成資源列表(manifest)

通過webpack-manifest-plugin外掛生成manifest.json檔案


new ManifestPlugin({
writeToFileEmit: true,
publicPath: 'http://localhost:5000/static/'
})

檔案結果如圖:

伺服器讀取資源列表載入到模板檔案中


app.use(async (ctx, next) => {
const manifest = await fs.readFile(path.resolve(__dirname, 'assets/bundles/manifest.json'))
ctx.state = {
static: JSON.parse(manifest.toString())
}
await next()
})

這個中介軟體通過讀去manifest.json將資源列表掛載到ctx.state(模板變數)中, 之後就可以直接在模板中引用靜態資變數了


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{{ title }}</title>
<link rel="stylesheet" href="{{static['test.css']}}" rel="external nofollow" >
</head>
<body>
<h1>Hello, World</h1>
<script src="{{static['test.js']}}"></script>
</body>
</html>

需要注意的是由於後端渲染的一般是多入口, 所以只需要在對應的模板中引入需要的入口檔案.

熱載入

熱載入其實也有很多解決方案: browsersync, live reload 等等, 但是這些都是full reload 只是減少了f5的頻率, webpack的熱載入就方便很多了通過websocket(具體我也不清楚), 配置起來也很簡單.

在入口檔案中加上


hot: 'webpack/hot/only-dev-server',
devServerClient: 'webpack-dev-server/client?http://0.0.0.0:5000'
/**
完整版
entry: {
index: './assets/index.js',
test: './assets/test.js',
hot: 'webpack/hot/only-dev-server',
devServerClient: 'webpack-dev-server/client?http://0.0.0.0:5000'
},
*/

外掛中加上: new webpack.HotModuleReplacementPlugin()

需要注意的有兩點:

extract-text-webpack-plugin 加上之後就無法hot reload, 開發配置不要加上這個外掛
根據webpack的文件, 每個入口檔案都需要加上下面一段程式碼才能實現 js的hot reload


if (module.hot) {
module.hot.accept()
}

完整配置和程式碼這裡就不貼了, 倉庫地址(django部分程式碼在master分支): https://github.com/xiadd/wepack-mutipage

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援指令碼之家。

您可能感興趣的文章:

webpack常用配置項配置檔案介紹webpack中引用jquery的簡單實現Webpack 實現 Node.js 程式碼熱替換Webpack Vue如何匯入Jquery和Jquery的第三方外掛基於vuejs webpack的日期選擇外掛Vue.js中用webpack合併打包多個元件並實現按需載入webpack獨立打包和快取處理詳解詳解webpack 多頁面/入口支援&公共元件單獨打包

相關文章

前端開發 最新文章