我們都知道,對於node來說,前端vue代碼的迭代節奏是很快的,可能一周要迭代幾次,但是node的迭代卻沒那么平凡,可能一周更新一次甚至更久,那么為了node服務的穩定,減少node服務的發布次數,是非常有用的。 配置中心是肯定需要的,因為需要通過配置不同的資源版本號,來通知node服務更新服務上的版本號 那么 我們的vue代碼 要如何改造才能實現熱更新呢? 我們就以vue官方給的例子來看
以下代碼是我截取的兩段代碼官方案例:
首先他定義了一個createRenderer的方法
里面調用的是vue-ssr的createBundleRender方法來創建的渲染函數
然后傳入了使用了三個文件,template.html bundle.json 和clientmanifest.json
這里可以看到 在createRender的時候 傳入的clientMainfest bundle 都是reqire的 那么有同學會想,我要支持熱更新 是不是根據require的緩存機制,去定時的清理緩存?雖然也能實現但是其實不用的 我查詢了官方的api文檔,其實bundle支持三種參數
然后再看下vue的源碼,如果傳入的是一個絕對路徑,類似於上面這個案例 require某個dist目錄下的bundle.json文件的時候 做了什么處理
它判斷 如果是一個js 或者json文件路徑的 那么 他會先讀取這個文件,然后通過json轉化一下成對象,然后再走下面的判斷是否是oject邏輯 那么,我們不是可以替他做這個事情嘛 我們可以從遠程讀取到bundle文件 然后將他轉化成bundle 然后傳入給createBundleRender方法 就可以不用通過require方法去獲取了 然后遠程bundle文件加上版本號,就可以實現通過配置來熱更新