上一篇主要是對新項目的一些介紹和對技術棧升級的思考,之前也提到,既然是新項目,從0開始,沒有歷史包袱,應該可以放手玩了。但考慮到如何能讓老項目受益,并且從技術架構的普適性去考慮,需要橫向擴展,讓更多項目受益,讓更多開發人員參與進來,接下來我會從以下幾個方面去選定。
構建環境
在現有項目中的構建打包流程是gulp和webpack結合使用的,gulp負責任務的優先級調度執行,webpack負責各模塊的依賴分析打包,在這個項目中我的計劃是放棄使用gulp,因為經過調研發現webpack4.x 完全能滿足這種輕量級項目的構建需求,并且可以做到簡單化,還具備穩定性,具體細節我會在下一章的環境搭建中講到。
所以,對于構建環境可以明確是基于webpack完成環境的配置搭建。
開發框架
該項目是基于前端后端分離的方案實現,前端包含:api服務和客戶端頁面兩部分,api服務是基于koa2的nodejs中間層服務,客戶端是基于vue的多頁面入口的設計。
koa2
koaJS是我近幾年一直使用的node開發框架,從1.x到目前最新的2.13.0(這個項目中的版本)都有在項目中使用的案例。它的特點是優雅、簡潔、表達力強、自由度高,再加上獨特的中間件流程控制,也是典型的洋蔥模型,可玩性很高,非常適合我們這種輕量化中間層服務。
說到node開發框架你也可能會想到 eggJs ,thinkJs,用他們豈不是更方便快捷?要知道上述兩個底層都是基于koa進行的再次封裝,我的建議是 如果你想深入的去學習node,想在開發中去深入了解它,尤其是想自己去開發一些中間件,那koa是不錯的選擇,當然,前提是你已經具備nodejs相關的知識。
再回到這個項目中,我對這個服務有兩個階段的預期,在第一個階段會將它職責定位在接管路由(router),為客戶端js提供api服務。第二階段,會考慮基于同構方案的首屏服務端(SSR)渲染。在完成第一階段時就已經具備上線條件,后續會結合產品需求和seo再去實施SSR。
vue
使用vue來完成H5前端頁面的構建是我一直認為最合適的,我個人覺得也沒有必要去跟react去做各種的對比,他們各自的優勢也非常明顯。這里要提到另外一個考量,選擇什么樣的開發框架是要結合你們團隊成員的整體技術水平,對框架的可接受程度,還要結合公司的業務和產品形態。
所以,我的選擇是vue,是2.xx的版本,最近剛發了3.0版本,不過還是需要等等再上。
組件庫
先解釋一下,這里的組件庫是指的項目中全局通用的如,toast,dialog,loading 等公共組件,我一直的想法是能有公司自己的公共組件庫,這個事也是一直推進中,困難重重,這會涉及到跟ui設計師的對接,設計規范的制定,整體風格的統一。到目前已經產出了一些組件,任務道遠啊。
結論
上述是我對于這個項目的技術棧的選型,總結下來是:
koaJs:負責中間服務層
vue:負責客戶端頁面構建
組件庫:自研 + 少量開源
webpack:代碼構建打包
已經完成了兩篇文章的總結,還沒看到代碼,哈哈,下一篇我會把重點部分的代碼實現拿出來跟大家分享,也歡迎一起交流,一起進步,感謝閱讀!