vue 2.0服務(wù)端渲染從零開始(二)

前言

接著上一篇文章vue 2.0服務(wù)端渲染從零開始(一)伤溉,本篇主要介紹如何編寫通用代碼躏尉。

編寫通用代碼

編寫通用代碼時(shí)的約束條件:即運(yùn)行在服務(wù)器和客戶端的代碼尤溜,由于用例和平臺(tái)API的差異一死,當(dāng)運(yùn)行在不同環(huán)境中時(shí)钞诡,我們的代碼將不會(huì)完全相同周伦。

Vue.js 服務(wù)器端渲染指南--編寫通用代碼中詳細(xì)的介紹了需要注意的幾個(gè)方面:

  • 服務(wù)器上的數(shù)據(jù)響應(yīng)
    • 獨(dú)立的應(yīng)用程序?qū)嵗?/li>
    • 禁用數(shù)據(jù)響應(yīng)
  • 組件生命周期鉤子函數(shù)
    • 只有 beforeCreatecreate會(huì)在服務(wù)端渲染(SSR)過程中被調(diào)用夕春。
    • 副作用代碼移動(dòng)到beforeMountmounted生命周期中。
  • 訪問特定平臺(tái)API
    • 僅瀏覽器可用的全局變量windowdocument专挪,在純客戶端的生命周期鉤子函數(shù)中惰性訪問它們及志。
    • 盡可能使用通用API,例如axios可以向服務(wù)器和客戶端都暴露相同的API
  • 自定義指令
    • 推薦使用組件作為抽象機(jī)制寨腔,并運(yùn)行在「虛擬 DOM 層級(jí)(Virtual-DOM level)」(例如使用渲染函數(shù)render function)
    • 如果自定義指令不是很容易替換為組件速侈,則可以在創(chuàng)建服務(wù)器renderer時(shí),使用directives選項(xiàng)提供的"服務(wù)器端版本"

避免狀態(tài)單例

同樣是單例對(duì)象(vue實(shí)例)迫卢,在純客戶端代碼時(shí)倚搬,vue實(shí)例在組件創(chuàng)建是生成,在組件銷毀后跟著從內(nèi)存中清除乾蛤。

但是Node.js服務(wù)器是一個(gè)長(zhǎng)期運(yùn)行的進(jìn)程每界。創(chuàng)建的vue實(shí)例將一直留存在內(nèi)存中,導(dǎo)致它被每個(gè)傳入的請(qǐng)求共享幻捏,這樣很容易導(dǎo)致交叉請(qǐng)求狀態(tài)污染盆犁。

因此,我們不應(yīng)該直接創(chuàng)建一個(gè)應(yīng)用程序?qū)嵗劬牛菓?yīng)該暴露一個(gè)可以重復(fù)執(zhí)行的工廠函數(shù)谐岁,為每個(gè)請(qǐng)求創(chuàng)建新的應(yīng)用程序?qū)嵗?/p>

之前基本示例中的寫法(直接創(chuàng)建):

const app = new Vue({
    data: {
      url: req.url
    },
    template: '<div>訪問的url是{{url}}</div>'
  });

工廠模式:
app.js

const Vue = require('vue')

module.exports = function createApp (context) {
  return new Vue({
    data: {
      url: context.url
    },
    template: '<div>訪問的 URL 是:{{ url }}</div>'
  })
}

server.js

 const createApp = require('./app')
  
 const app = createApp(context)
完整示例

戳我
請(qǐng)注意分支:dev_2分支

result.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市榛臼,隨后出現(xiàn)的幾起案子伊佃,更是在濱河造成了極大的恐慌,老刑警劉巖沛善,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件航揉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡金刁,警方通過查閱死者的電腦和手機(jī)帅涂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門议薪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人媳友,你說我怎么就攤上這事斯议。” “怎么了醇锚?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵哼御,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我焊唬,道長(zhǎng)恋昼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任赶促,我火速辦了婚禮液肌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芳杏。我一直安慰自己矩屁,他們只是感情好辟宗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布爵赵。 她就那樣靜靜地躺著,像睡著了一般泊脐。 火紅的嫁衣襯著肌膚如雪空幻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天容客,我揣著相機(jī)與錄音秕铛,去河邊找鬼。 笑死缩挑,一個(gè)胖子當(dāng)著我的面吹牛但两,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播供置,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谨湘,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了芥丧?” 一聲冷哼從身側(cè)響起紧阔,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎续担,沒想到半個(gè)月后擅耽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡物遇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年乖仇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了憾儒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乃沙,死狀恐怖航夺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情崔涂,我是刑警寧澤阳掐,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站冷蚂,受9級(jí)特大地震影響缭保,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蝙茶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一艺骂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧隆夯,春花似錦钳恕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至愧口,卻和暖如春睦番,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耍属。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工托嚣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厚骗。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓示启,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親领舰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夫嗓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載 :OpenDiggawesome-github-vue 是由OpenDigg整理并維護(hù)的Vue相關(guān)開源項(xiàng)目庫...
    果汁密碼閱讀 23,125評(píng)論 8 124
  • 來源:github.com Vue.js開源項(xiàng)目速查表:https://www.ctolib.com/cheats...
    zhangtaiwei閱讀 11,618評(píng)論 1 159
  • 人生只若初見kl閱讀 318評(píng)論 2 1
  • 走在回家路上,天色已黑提揍,下著濛濛的小雨啤月,略有些冰涼的秋意,呼吸到肺里的空氣倒是覺得各外清爽劳跃。要穿過馬路去對(duì)面坐...
    一米_HZ閱讀 178評(píng)論 0 0
  • 過了肥年刨仑,回到學(xué)校郑诺,Lab夹姥,導(dǎo)師,同學(xué)依舊如此辙诞,一半研究僧生活就這樣糊里糊涂過了辙售,時(shí)針撥到研二下半學(xué)期,幾個(gè)月后就...
    Phoebe_px閱讀 266評(píng)論 1 0