本文主要介紹了webpack配置之后端渲染詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望能幫助到大家。
webpack配置之后端渲染2017年, vue, react, angular 已經占據前端的主流, 不得不承認這也是前端的未來發展方向. 但是后端渲染的開發方式仍然很常見, 不管是個人項目還是商業項目, 后端渲染搞起來真是糙猛快. 但是借著前端發展的東風, 后端渲染也有很大的改進空間. 這里就介紹一下我自己的實踐經驗: 前后端不分離的情況下實現熱加載以及一定程度下的前端主導開發. 這里以koa為例, 但是倉庫里也有django版. 理論上所有語言都可以實現. 有興趣可以看下, 倉庫地址在文末.
效果圖
原理
nodejs做后端好嗎。原理說起來還是很簡單的:
1、獨立啟動靜態資源服務器打包生成資源列表(manifest)
通過webpack-manifest-plugin插件生成manifest.json文件
new ManifestPlugin({
writeToFileEmit: true,
js可以寫后端嗎,publicPath: 'http://localhost:5000/static/'
})
文件結果如圖:
服務器讀取資源列表加載到模板文件中
app.use(async (ctx, next) => {
前端webpack?const manifest = await fs.readFile(path.resolve(__dirname, 'assets/bundles/manifest.json'))
ctx.state = {
static: JSON.parse(manifest.toString())
}
await next()
vue.js實戰、})
這個中間件通過讀去manifest.json將資源列表掛載到ctx.state(模板變量)中, 之后就可以直接在模板中引用靜態資變量了
{{ title }}需要注意的是由于后端渲染的一般是多入口, 所以只需要在對應的模板中引入需要的入口文件.
熱加載
熱加載其實也有很多解決方案: browsersync, live reload 等等, 但是這些都是full reload 只是減少了f5的頻率, webpack的熱加載就方便很多了通過websocket(具體我也不清楚), 配置起來也很簡單.
js后端開發,在入口文件中加上
hot: 'webpack/hot/only-dev-server',
devServerClient: 'webpack-dev-server/client?http://0.0.0.0:5000'
/**
完整版
后端框架php、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'
web后端、},
*/
插件中加上: new webpack.HotModuleReplacementPlugin()
需要注意的有兩點:extract-text-webpack-plugin 加上之后就無法hot reload, 開發配置不要加上這個插件
根據webpack的文檔, 每個入口文件都需要加上下面一段代碼才能實現 js的hot reload
php前后端。if (module.hot) {
module.hot.accept()
}
完整配置和代碼這里就不貼了, 倉庫地址(django部分代碼在master分支): https://github.com/xiadd/wepack-mutipage
相關推薦:
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态