nodejs做后端好嗎,php js后端渲染,webpack后端渲染詳解

 2023-10-20 阅读 24 评论 0

摘要:本文主要介紹了webpack配置之后端渲染詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望能幫助到大家。webpack配置之后端渲染2017年, vue, react, angular 已經占據前端的主流, 不得不承認這也是前端的未來發

本文主要介紹了webpack配置之后端渲染詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望能幫助到大家。

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

效果圖

5cfd11395583283a5dd56db545b94728.gif

原理

nodejs做后端好嗎。原理說起來還是很簡單的:

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

通過webpack-manifest-plugin插件生成manifest.json文件

new ManifestPlugin({

writeToFileEmit: true,

js可以寫后端嗎,publicPath: 'http://localhost:5000/static/'

})

文件結果如圖:

3d923f466583d2d342a586ef0df4bc8c.png

服務器讀取資源列表加載到模板文件中

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 }}

Hello, World

需要注意的是由于后端渲染的一般是多入口, 所以只需要在對應的模板中引入需要的入口文件.

熱加載

熱加載其實也有很多解決方案: 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

相關推薦:

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/152889.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息