爲了先後端分離,咱們在前端和api層中間,架構了一層node層,用來作服務端渲染,來加快用戶的首屏可用和對搜索引擎的友好。項目一開始放置在同一個git倉庫裏面,分別放在client目錄和server目錄中(或者相似於vue 官方例子中的同樣,node服務可能只有一個sever.js。由於server中可能須要client中的一些資源,因此不得不將他們放在一塊兒。後來經過配置中心驅動以後,client 和server 能夠徹底獨立,經過配置中心創建鏈接。因此徹底能夠將client項目和server項目分離開。html
其實就是在前端項目中,再作了一次先後端分離,此次分離的緣由 跟與api的先後端分離有些不同。此次是由於 第一個 前端vue項目本就是一個徹底獨立的項目,拖着server項目反而顯的不是那麼靈活,一樣,server裏面包含了client,雖然能夠獨立發佈,可是由於迭代週期的不一樣,在管理分支上面總歸有點變扭,索性分開,各過各的 各過各的是極好的,但是開發的時候怎麼各過各的啊(f***~),我開發的時候要走服務端渲染的邏輯的啊,你讓我先基於客戶端開發,而後再配合着node調試一波?那可不是反而增長了開發成本 有沒有可讓client獨立也能跑ssr的邏輯,而後最後只要跟正式的node服務經過配置中心配合起來就行了呢? 有啊,給client配置一個簡單的服務不就行了麼?通常的nodessr不都是這樣的麼 說白了就我上面說的,一個sever.js。裏面是一個基於koa的簡單服務,加上了koawepack的中間件(koa-webpack),用來作開發時候的熱加載。 而後經過不一樣的啓動腳本,來配置上不一樣的環境變量參數,以此來啓動不一樣的頁面開發,這樣子,開發就方便多了,npm run start:home 就是開發首頁,npm run start:video 就是開發播放頁 後面加上server參數就是開發服務端渲染 例如 npm run start:home:server (這裏我只提供一個思路昂~具體實現要講的東西太多了,這裏不太想寫 >_>~~)前端
既然是個node服務,那麼對於服務也要有相應的容災方案,否則怎麼放心將大流量交給它 那麼,咱們須要一個降級方案以備不時之需(如下內容須要創建在你對vuessr有必定了解的基礎之上) 首先 vue 服務端渲染都有兩個入口文件,entryclient.js和entryserver.js 若是要支持降級,那麼須要在entryclient.js上面動一些手腳,咱們仍然以官方例子爲例 如今index.temlate.html 增長一個客戶端渲染容器,一個名爲de-app的div(<!--vue-ssr-outlet-->是服務端渲染的佔位符)vue