如何為你的網(wǎng)站挑選適宜的Web開(kāi)發(fā)框架?
  • 更新時(shí)間:2024-12-24 21:18:42
  • 建站經(jīng)驗(yàn)
  • 發(fā)布時(shí)間:2年前
  • 408

古語(yǔ)云工欲善其事,必先利其器,對(duì)于工程師而言,選擇一款合適而強(qiáng)大的開(kāi)發(fā)框架對(duì)開(kāi)發(fā)工作是大有裨益的。那么我們?cè)搹氖裁唇嵌葋?lái)進(jìn)行衡量和挑選呢?


首先對(duì)于一家創(chuàng)業(yè)公司而言,這更像是一個(gè)商業(yè)抉擇而不僅僅是技術(shù)選擇,時(shí)間人力物力等開(kāi)銷(xiāo)都必須要考慮周全。一旦公司規(guī)模上來(lái)了資金不成問(wèn)題了,可選擇的空間就更大了甚至可以進(jìn)行遷移或重新架構(gòu)。原文作者Ramigbtech總結(jié)了以下10點(diǎn)以供參考。譯文如下:


1. 語(yǔ)法

擁有優(yōu)雅語(yǔ)法的語(yǔ)言無(wú)疑可以讓編程工作變得愜意,但有時(shí)候我們?nèi)菀妆槐硐笏杀?,如果憑直覺(jué)你認(rèn)定,"this is text".split(’ ‘).reverse.join(‘ ‘)比" ".join("This istext".split(’ ‘)[::-1]) 的寫(xiě)法要好或差,那么這僅僅是外貌協(xié)會(huì),實(shí)際上我們更應(yīng)該著眼于它本身是否具有局限性或語(yǔ)法是否累贅,用更少的代碼完成等價(jià)的工作我們自己或團(tuán)隊(duì)都會(huì)對(duì)當(dāng)初的選擇心存感激。


2. 功能和體型

我們需要為路由編寫(xiě)復(fù)雜的正則查詢(xún)嗎?路由中含有內(nèi)建的DSL嗎?我們需要使用ORM嗎?或許我們還想擁有更多其它功能。建議選取一款較輕巧框架作為開(kāi)始,日后我們可以為它添磚加瓦。


3. 文檔資源

具備豐富文檔資源的框架使用起來(lái)的確是得心應(yīng)手事半功倍。例如我在學(xué)習(xí)CodeIgniter時(shí),根本不必像無(wú)頭蒼蠅那樣四處尋找答案,其自帶的教程和配套范例都做得非常認(rèn)真仔細(xì)。相對(duì)而言,我在學(xué)習(xí)ExpressJS的時(shí)候就比較費(fèi)力了。


4. 代碼自動(dòng)生成

框架中的代碼自動(dòng)生成功能通常能為我們節(jié)省不少時(shí)間,我們僅需要做好控制器/類(lèi)等的處理而把其它重復(fù)的編碼工作交給框架,雖然有時(shí)候不能自由地進(jìn)行自定義,但對(duì)于想快速開(kāi)發(fā)出一個(gè)能運(yùn)行的原型是有積極意義的。


5. 模塊化

Django在模塊/Apps的處理上令人贊嘆,不僅僅讓代碼復(fù)用變得簡(jiǎn)便,同時(shí)有助我們培養(yǎng)良好的模塊化思維。當(dāng)我們不再需要X模塊時(shí),我們只需把它移除然后做好代碼重構(gòu)工作就可以了。


6. 基礎(chǔ)架構(gòu)

不論是使用LAMP還是MEAN堆棧,或是Rails/Unicorn等,最關(guān)鍵的還是我們對(duì)這個(gè)架構(gòu)有沒(méi)有足夠的了解,有沒(méi)有相關(guān)組件的維護(hù)能力。假如應(yīng)用的前端和后端都與Javascript相關(guān),采用MEAN堆棧架構(gòu)是個(gè)不錯(cuò)的選擇。


7. 社區(qū)和更新速度

框架相關(guān)的社區(qū)是否活躍?有沒(méi)有技術(shù)大咖坐鎮(zhèn)?官方會(huì)否常常上StackOverflow幫忙解答技術(shù)疑難?為這些問(wèn)題找到完美的答案是有一定難度,但絕大多數(shù)時(shí)候數(shù)字是最真實(shí)的。日期或參與度/帖子熱度都是不錯(cuò)的衡量指標(biāo)。此外,補(bǔ)丁的更新速度也十分關(guān)鍵,對(duì)安全性和漏洞的重視與否可謂是牽一發(fā)而動(dòng)全身。


8. 重大變更

就在最近不少程序員聽(tīng)到Angular 2.0的重大變更后感到震驚和抓狂,盡管要到2015年晚些時(shí)候才會(huì)全部完成,但一想到辛辛苦苦做好的代碼都會(huì)變成過(guò)去時(shí),又怎能安之若素呢?另一個(gè)例子是Yii框架,新版本2.0的推出意味著對(duì)前個(gè)版本的完全重寫(xiě)。


9. 部署和依賴(lài)

容易部署嗎?能方便進(jìn)行擴(kuò)展嗎?需要花費(fèi)多少時(shí)間來(lái)學(xué)習(xí)掌握部署工具?雖然有Docker這樣的工具可以幫我們解答上述問(wèn)題,但是抽取時(shí)間來(lái)思考這方面的問(wèn)題還是有必要的。


10. 人力

我們能快捷地找到相應(yīng)的開(kāi)發(fā)人才嗎?將要使用的框架在我們所處的區(qū)域是否流行?縱然培訓(xùn)工作是管理的一部分,但對(duì)于初創(chuàng)公司而言時(shí)間和資金時(shí)刻都得精打細(xì)算。


寫(xiě)在最后:

如果是中型的網(wǎng)站,我會(huì)選擇Django。如果我暫時(shí)不能確定網(wǎng)站的規(guī)模和將投入多少開(kāi)發(fā)精力,我會(huì)選擇Rails。如果我不想前后端工作分得太開(kāi),我會(huì)選擇MEAN堆棧

我們專(zhuān)注高端建站,小程序開(kāi)發(fā)、軟件系統(tǒng)定制開(kāi)發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開(kāi)發(fā)、各類(lèi)API接口對(duì)接開(kāi)發(fā)等。十余年開(kāi)發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿(mǎn)意為止,多一次對(duì)比,一定讓您多一份收獲!

本文章出于推來(lái)客官網(wǎng),轉(zhuǎn)載請(qǐng)表明原文地址:https://www.tlkjt.com/experience/7303.html
推薦文章

在線客服

掃碼聯(lián)系客服

3985758

回到頂部