摘要:配置之后端渲染年已經占據前端的主流不得不承認這也是前端的未來發展方向但是后端渲染的開發方式仍然很常見不管是個人項目還是商業項目后端渲染搞起來真是糙猛快但是借著前端發展的東風后端渲染也有很大的改進空間這里就介紹一下我自己的實踐經驗前后端不分離
webpack配置之后端渲染2017年, vue, react, angular 已經占據前端的主流, 不得不承認這也是前端的未來發展方向. 但是后端渲染的開發方式仍然很常見, 不管是個人項目還是商業項目, 后端渲染搞起來真是糙猛快. 但是借著前端發展的東風, 后端渲染也有很大的改進空間. 這里就介紹一下我自己的實踐經驗: 前后端不分離的情況下實現熱加載以及一定程度下的前端主導開發. 這里以koa為例, 但是倉庫里也有django版. 理論上所有語言都可以實現. 有興趣可以看下, 倉庫地址在文末.
效果圖 原理原理說起來還是很簡單的:
獨立啟動靜態資源服務器打包生成資源列表(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(模板變量)中, 之后就可以直接在模板中引用靜態資變量了
{{ title }} Hello, World
需要注意的是由于后端渲染的一般是多入口, 所以只需要在對應的模板中引入需要的入口文件.
熱加載熱加載其實也有很多解決方案: 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
原文地址: https://github.com/xiadd/blog...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89312.html
摘要:最近簡單的研究了一下,對已經有了一個簡單的認知,主要應用于單頁面應用,是很不錯的框架。創建好之后,在命令行直接輸入即可,當控制臺顯示服務已啟動則表示該服務已經啟動成功了。配置參數中有一項為這項配置的就是我們即將使用的模板。 最近簡單的研究了一下SSR,對SSR已經有了一個簡單的認知,主要應用于單頁面應用,Nuxt是SSR很不錯的框架。也有過調研,簡單的用了一下,感覺還是很不錯。但是還是...
摘要:它會檢測出最大靜態子樹就是不需要動態性的子樹并且從渲染函數中萃取出來。這樣在每次重渲染的時候,它就會直接重用完全相同的同時跳過比對。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個鏈接~手把手教你從零寫一個簡單的 VUE 感謝有人看我扯技術,這篇文章主要介紹最近非常火的vue2前端框架的特點和vue2+vuex2+we...
摘要:它會檢測出最大靜態子樹就是不需要動態性的子樹并且從渲染函數中萃取出來。這樣在每次重渲染的時候,它就會直接重用完全相同的同時跳過比對。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個鏈接~手把手教你從零寫一個簡單的 VUE 感謝有人看我扯技術,這篇文章主要介紹最近非常火的vue2前端框架的特點和vue2+vuex2+we...
摘要:它會檢測出最大靜態子樹就是不需要動態性的子樹并且從渲染函數中萃取出來。這樣在每次重渲染的時候,它就會直接重用完全相同的同時跳過比對。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個鏈接~手把手教你從零寫一個簡單的 VUE 感謝有人看我扯技術,這篇文章主要介紹最近非常火的vue2前端框架的特點和vue2+vuex2+we...
摘要:使用做同構應用是用于開發數據不斷變化的大型應用程序的前端框架,結合其他輪子例如和就可以開發大型的前端應用。然后客戶端檢測到這些已經生成的就不會重新渲染,直接使用現有的結構。 使用React做同構應用 React是用于開發數據不斷變化的大型應用程序的前端view框架,結合其他輪子例如redux和react-router就可以開發大型的前端應用。 React開發之初就有一個特別的優勢,就是...
閱讀 2950·2021-11-24 09:39
閱讀 2858·2021-09-29 09:34
閱讀 3549·2021-09-24 10:23
閱讀 1731·2021-09-22 15:41
閱讀 1690·2019-08-30 15:55
閱讀 3506·2019-08-30 13:58
閱讀 2614·2019-08-30 13:11
閱讀 1662·2019-08-29 12:31