欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

webpack配置之后端渲染詳解

 更新時(shí)間:2017年10月26日 17:11:11   作者:xiadd  
本篇文章主要介紹了webpack配置之后端渲染詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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). 有興趣可以看下, 倉庫地址在文末.

效果圖

原理

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

1、獨(dú)立啟動靜態(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)資變量了

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

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

熱加載

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

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

  1. extract-text-webpack-plugin 加上之后就無法hot reload, 開發(fā)配置不要加上這個(gè)插件
  2. 根據(jù)webpack的文檔, 每個(gè)入口文件都需要加上下面一段代碼才能實(shí)現(xiàn) js的hot reload
if (module.hot) {
 module.hot.accept()
}

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用JS在瀏覽器中創(chuàng)建下載文件

    用JS在瀏覽器中創(chuàng)建下載文件

    前端很多項(xiàng)目中,都有文件下載的需求,特別是JS生成文件內(nèi)容,然后讓瀏覽器執(zhí)行下載操作(例如在線圖片編輯、在線代碼編輯、iPresst等
    2014-03-03
  • JavaScript正則表達(dá)式函數(shù)總結(jié)(常用)

    JavaScript正則表達(dá)式函數(shù)總結(jié)(常用)

    正則表達(dá)式作為一種匹配處理字符串的利器在很多語言中都得到了廣泛實(shí)現(xiàn)和應(yīng)用.這篇文章主要介紹了JavaScript正則表達(dá)式函數(shù)總結(jié),需要的朋友可以參考下
    2018-02-02
  • javascript基本包裝類型介紹

    javascript基本包裝類型介紹

    這篇文章主要介紹了javascript的基本包裝類型,JS為了便于操作基本類型,提供了3個(gè)特殊的引用類型:Boolean/Number和String,需要的朋友可以參考下
    2015-04-04
  • JavaScript緩動動畫函數(shù)的封裝方法

    JavaScript緩動動畫函數(shù)的封裝方法

    這篇文章主要為大家詳細(xì)介紹了JavaScript緩動動畫函數(shù)的封裝方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • bootstrap表格內(nèi)容過長時(shí)用省略號表示的解決方法

    bootstrap表格內(nèi)容過長時(shí)用省略號表示的解決方法

    這篇文章主要介紹了bootstrap表格內(nèi)容過長時(shí)用省略號表示的解決方法,需要的朋友可以參考下
    2017-11-11
  • js 多種變量定義(對象直接量,數(shù)組直接量和函數(shù)直接量)

    js 多種變量定義(對象直接量,數(shù)組直接量和函數(shù)直接量)

    js 多種變量定義(對象直接量,數(shù)組直接量和函數(shù)直接量),大家可以參考下,對于以后學(xué)習(xí)js 面向?qū)τ谂cjson操作會有幫助。
    2010-05-05
  • 微信小程序tabBar 返回tabBar不刷新頁面

    微信小程序tabBar 返回tabBar不刷新頁面

    這篇文章主要介紹了微信小程序tabBar 返回tabBar不刷新頁面,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • JS模擬實(shí)現(xiàn)方法重載示例

    JS模擬實(shí)現(xiàn)方法重載示例

    這篇文章主要介紹了JS模擬實(shí)現(xiàn)方法重載,涉及js基于arguments實(shí)現(xiàn)重載的相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • 小程序?qū)崿F(xiàn)簡單語音聊天的示例代碼

    小程序?qū)崿F(xiàn)簡單語音聊天的示例代碼

    這篇文章主要介紹了小程序?qū)崿F(xiàn)簡單語音聊天的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • JS+Canvas實(shí)現(xiàn)五子棋游戲

    JS+Canvas實(shí)現(xiàn)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了原生JS+Canvas實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評論