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






