在實際業務開發中,會遇到這樣一種需求,使用VUE的頁面須要支持SEO,同時對首屏有指標性要求,目前市面上廣泛使用的是Nuxt.js解決方案,在引入的同時還須要考慮與現有的全棧工程結合,本系列文章探討的是此類全棧工程的解決方案,同時使用的是TypeScript應用於先後端編程,文章中介紹的工程與技術要點源碼已上傳至Github,有須要的朋友可自行下載:
Nuxt.js和Nest.js同構工程前端
複製代碼
文章意在拋磚引玉,先後端使用同一種語言TypeScript編寫,示例已包含基本接口請求,數據庫鏈接應用,公用模塊封裝等實際開發中使用到的內容。git
TypeScript全棧工程實戰-(Nuxt. js & Nest. js) - 2、《框架融合》github
TypeScript全棧工程實戰-(Nuxt. js & Nest. js) - 3、《配置服務》數據庫
TypeScript全棧工程實戰-(Nuxt. js & Nest. js) - 4、《UI系統》編程
TypeScript全棧工程實戰-(Nuxt. js & Nest. js) - 5、《API服務設計》後端
TypeScript全棧工程實戰-(Nuxt. js & Nest. js) - 6、《SEO功能實現》服務器
TypeScript全棧工程實戰-(Nuxt. js & Nest. js) - 7、《Vuex使用》框架
TypeScript全棧工程實戰-(Nuxt. js & Nest. js) - 8、《接入Mongo DB服務》mongoose
TypeScript全棧工程實戰-(Nuxt. js & Nest. js) - 9、《TypeScript》post
TypeScript全棧工程實戰-(Nuxt. js & Nest. js) - 10、《工程化部署》
同構化工程常常會遇到一種問題:即先後端配置須要維護2份或者配置重複問題,在本示例工程中,將創建配置服務,從框架剝離的角度,讓先後端使用同一份配置。
這裏指的框架剝離:指的是配置服務不能導入任何先後端框架類或接口,這樣作的目的是避免先後端在調用時遇到各自運行環境不支持的類,好比:服務端支持mongoose但前端不支持運行。因此服務配置必須是純淨的,純TypeScript文件,與框架無關。
NODE_ENV=xx
進行爲準。
配置服務
在單例創建的構造體中首先讀入環境配置變量,依據環境配置變量決定惟一配置內容爲當前標記的哪一個環境,依據標記分別實例化不一樣的環境配置。配置基類
配置基類中定義各個環境共同的配置,差別化配置則由各環境子類自已實現,例如:環境標記寫入
前面提到,配置服務在實例化前先讀入了環境配置標記,該環境配置標記應在服務器啓動以前完成,在這裏封裝到單獨JS文件中,而且在啓動前經過命令行方式寫入,確保先後端讀取的是同一份配置。
至此,完成先後端調用同一份配置內容。