成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

webpack配置之后端渲染

wing324 / 1263人閱讀

摘要:配置之后端渲染年已經(jīng)占據(jù)前端的主流不得不承認(rèn)這也是前端的未來發(fā)展方向但是后端渲染的開發(fā)方式仍然很常見不管是個(gè)人項(xiàng)目還是商業(yè)項(xiàng)目后端渲染搞起來真是糙猛快但是借著前端發(fā)展的東風(fēng)后端渲染也有很大的改進(jìn)空間這里就介紹一下我自己的實(shí)踐經(jīng)驗(yàn)前后端不分離

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

效果圖

原理

原理說起來還是很簡(jiǎn)單的:

獨(dú)立啟動(dòng)靜態(tài)資源服務(wù)器打包生成資源列表(manifest)

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

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

文件結(jié)果如圖:

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

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

這個(gè)中間件通過讀去manifest.json將資源列表掛載到ctx.state(模板變量)中, 之后就可以直接在模板中引用靜態(tài)資變量了




  
  
  
  {{ title }}
  


  

Hello, World

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

熱加載

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

在入口文件中加上

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()

需要注意的有兩點(diǎn):

extract-text-webpack-plugin 加上之后就無法hot reload, 開發(fā)配置不要加上這個(gè)插件

根據(jù)webpack的文檔, 每個(gè)入口文件都需要加上下面一段代碼才能實(shí)現(xiàn) js的hot reload

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

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

原文地址: https://github.com/xiadd/blog...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89312.html

相關(guān)文章

  • 手把手教你搭建SSR(vue/vue-cli + express)

    摘要:最近簡(jiǎn)單的研究了一下,對(duì)已經(jīng)有了一個(gè)簡(jiǎn)單的認(rèn)知,主要應(yīng)用于單頁面應(yīng)用,是很不錯(cuò)的框架。創(chuàng)建好之后,在命令行直接輸入即可,當(dāng)控制臺(tái)顯示服務(wù)已啟動(dòng)則表示該服務(wù)已經(jīng)啟動(dòng)成功了。配置參數(shù)中有一項(xiàng)為這項(xiàng)配置的就是我們即將使用的模板。 最近簡(jiǎn)單的研究了一下SSR,對(duì)SSR已經(jīng)有了一個(gè)簡(jiǎn)單的認(rèn)知,主要應(yīng)用于單頁面應(yīng)用,Nuxt是SSR很不錯(cuò)的框架。也有過調(diào)研,簡(jiǎn)單的用了一下,感覺還是很不錯(cuò)。但是還是...

    liangdas 評(píng)論0 收藏0
  • 無痛學(xué)會(huì)各種 2 的 Vue2+Vuex2+Webpack2 前后同構(gòu)渲染

    摘要:它會(huì)檢測(cè)出最大靜態(tài)子樹就是不需要?jiǎng)討B(tài)性的子樹并且從渲染函數(shù)中萃取出來。這樣在每次重渲染的時(shí)候,它就會(huì)直接重用完全相同的同時(shí)跳過比對(duì)。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個(gè)鏈接~手把手教你從零寫一個(gè)簡(jiǎn)單的 VUE 感謝有人看我扯技術(shù),這篇文章主要介紹最近非?;鸬膙ue2前端框架的特點(diǎn)和vue2+vuex2+we...

    fish 評(píng)論0 收藏0
  • 無痛學(xué)會(huì)各種 2 的 Vue2+Vuex2+Webpack2 前后同構(gòu)渲染

    摘要:它會(huì)檢測(cè)出最大靜態(tài)子樹就是不需要?jiǎng)討B(tài)性的子樹并且從渲染函數(shù)中萃取出來。這樣在每次重渲染的時(shí)候,它就會(huì)直接重用完全相同的同時(shí)跳過比對(duì)。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個(gè)鏈接~手把手教你從零寫一個(gè)簡(jiǎn)單的 VUE 感謝有人看我扯技術(shù),這篇文章主要介紹最近非?;鸬膙ue2前端框架的特點(diǎn)和vue2+vuex2+we...

    30e8336b8229 評(píng)論0 收藏0
  • 無痛學(xué)會(huì)各種 2 的 Vue2+Vuex2+Webpack2 前后同構(gòu)渲染

    摘要:它會(huì)檢測(cè)出最大靜態(tài)子樹就是不需要?jiǎng)討B(tài)性的子樹并且從渲染函數(shù)中萃取出來。這樣在每次重渲染的時(shí)候,它就會(huì)直接重用完全相同的同時(shí)跳過比對(duì)。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個(gè)鏈接~手把手教你從零寫一個(gè)簡(jiǎn)單的 VUE 感謝有人看我扯技術(shù),這篇文章主要介紹最近非?;鸬膙ue2前端框架的特點(diǎn)和vue2+vuex2+we...

    Pluser 評(píng)論0 收藏0
  • 使用React做同構(gòu)應(yīng)用

    摘要:使用做同構(gòu)應(yīng)用是用于開發(fā)數(shù)據(jù)不斷變化的大型應(yīng)用程序的前端框架,結(jié)合其他輪子例如和就可以開發(fā)大型的前端應(yīng)用。然后客戶端檢測(cè)到這些已經(jīng)生成的就不會(huì)重新渲染,直接使用現(xiàn)有的結(jié)構(gòu)。 使用React做同構(gòu)應(yīng)用 React是用于開發(fā)數(shù)據(jù)不斷變化的大型應(yīng)用程序的前端view框架,結(jié)合其他輪子例如redux和react-router就可以開發(fā)大型的前端應(yīng)用。 React開發(fā)之初就有一個(gè)特別的優(yōu)勢(shì),就是...

    ymyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<