2018年度最流行的七個網站開發(fā)框架
譯文【51CTO.com快譯】如今,面對各種各樣的網站開發(fā)框架,您難免會產生“選擇恐懼癥”。本文將從客戶和開發(fā)人員的角度出發(fā),幫助您為Web應用的構建做出明智的框架選擇。
讓我們首先來對如下問題進行考量:
- 您需要選擇那些能夠支持快速應用開發(fā)的框架嗎?
- 您選擇架構的真正目的是什么?
- 它是否能夠支持您的特定項目、及所需的各種特性?
- 它是否擁有一個龐大的支持社區(qū)?
通過上述一系列的問題,您應該對自己的需求有了一個清晰的了解。下面,我們準備了本年度最流行的七個網站開發(fā)框架,供您進一步參考與選擇。
1.Angular
Angular是一種適用于前端開發(fā)的、且開源的JavaScript框架。大多數(shù)動態(tài)網站應用都會使用該框架來構建。
基于“模型 - 視圖 - 控制器”的Angular架構,有著固定的組織結構,因此它非常適用于那些具有單頁面的應用程序。
該框架包含了開發(fā)者需要掌握的各種控制器、指令集和其他組件。因此,其學習曲線較為“陡峭”。
另外,由于Angular支持數(shù)據的雙向綁定,因此它非常“勝任”建立那些實時的應用程序。那么,什么是雙向綁定呢?
在模型中,所有對于數(shù)據的修改,都能反映到其相關的視圖中;同時用戶對于視圖的所有修改,也能體現(xiàn)在模型里。換句話說,只要應用程序中的數(shù)據發(fā)生變化,其UI就會跟著改變。
當然,雙向綁定也會使得Angular的應用程序反應較慢。因為對于每一種綁定,Angular都會創(chuàng)建一個觀察器,以跟蹤DOM里的各種變化。一旦視圖被修改,Angular就會將新舊數(shù)值進行比較。因此,如果應用程序存在太多的觀察器的話,其性能勢必會大打折扣。
由于該框架能受益于龐大的支持社區(qū),因此,大多數(shù)有關單頁面應用所碰到的問題,都能在其社區(qū)里得到處理和解決。
根據BuiltWith(譯者注:它提供在線網站SEO查詢工具)提供的統(tǒng)計數(shù)據,如今有281652個網站正在使用Angular框架。
2. Django
2005年發(fā)布的Django是一款用Python編寫的框架。許多開發(fā)人員都喜歡Python的語法,因為它干凈,且沒有雜亂的語言符號。
按照TIOBE編程社區(qū)的統(tǒng)計,Python是排名第四的編程語言;而在GitHub上,它更是高居第二名。
憑借著這樣的語言特性,Django的學習曲線較為“平緩”,且廣受開發(fā)者們的歡迎。Django同樣遵循“模型 - 視圖 - 模板(MVT)”的架構。一般情況下,各種復雜的、以及由數(shù)據所驅動的網站,都會采用這種框架來進行構建。例如:Instagram、Disqus(譯者注:一家提供評論托管服務的第三方社會化系統(tǒng))、以及NASA等知名公司的網站都源自Django架構。
秉承著“不要重復造輪子”的基本原則,Django能夠方便組件的重用,因此它常被用來進行快速的網站開發(fā)。
當需要管理用戶帳戶和密碼時,該框架能夠提供卓越的安全性措施。它在Web應用程序開發(fā)的過程中,具有一定的“防水”性,能夠抵御諸如SQL注入、跨站點腳本、和點擊劫持(clickjacking)等,針對系統(tǒng)漏洞的攻擊。
由于Django不具備創(chuàng)建API的內在機制,因此Django需要通過復雜的代碼,才能實現(xiàn)路由的相關進程。而這對于一名初學者來說,可能較為困難。
Django的另一個重要方面是它有著廣闊的社區(qū),那里聚集著超過1500名貢獻者。他們?yōu)镈jango建立了一套資源庫,并配備有大量可供開發(fā)人員參考的教程。
根據BuiltWith提供的統(tǒng)計數(shù)據,如今有12790個網站正在使用Django框架。
3. Laravel
Laravel是由多位網站開發(fā)人員經歷了多年打磨的一款開源的PHP框架。
按照TIOBE編程社區(qū)的統(tǒng)計,PHP是排名第七的流行編程語言;而在GitHub上,它排名第五名。可見,Laravel同樣具有一定的普及程度。
該框架仍然遵循“模型 - 視圖 - 控制器(MVC)”的架構。許多社交網絡、新聞網站、以及內容管理系統(tǒng)都是使用該框架進行構建的。
我們從技術上看看Laravel備受歡迎的原因:
它是一款能夠增強PHP開發(fā),并適用于數(shù)據庫遷移、對象關系映射(Object Relational Mapping,ORM)編寫、以及模板編制的直觀框架。它不但能夠簡化身份驗證與緩存進程,還支持一種創(chuàng)建API的內置機制,以簡化路由。
相比較于Django而言,Laravel的學習曲線略為“陡峭”,用戶需要花一些時間去掌握它。
Laravel使用的主要安全措施是“散列密碼”。它能夠確保用戶密碼不會以簡單文本的形式顯示出來,而是被隱藏成為其背后的哈希值。該框架能夠對用戶網站中潛在的漏洞予以加固,進而抵御跨站腳本、SQL注入、以及可疑cookies等攻擊。
Laravel在資源庫方面完全可與Django媲美。它擁有大約1100個可供開發(fā)人員參考的視頻教程。
而在支持社區(qū)方面,目前Laravel比Django少400多名貢獻者,不過Laravel的社區(qū)規(guī)模也正在迎頭趕上。
根據BuiltWith提供的統(tǒng)計數(shù)據,如今有524474個網站正在使用Laravel框架。
4. Ruby on Rails
Ruby on Rails,或簡稱為Rails,是使用Ruby編寫的服務器端框架。該框架通過支持代碼的重用、以及靈活地適應各種變更,實現(xiàn)了快速應用開發(fā)(Rapid Application Development,RAD)。
廣闊的開發(fā)社區(qū)奠定了Rails的開源特性。Rails通過采用規(guī)則約定(conventions)的方式進行配置,從而顯著地提升了開發(fā)的進程。換句話說:開發(fā)人員可以使用各種規(guī)則約定,而非那些專門的配置文件。
此外,Rails支持RESTful風格的架構,確保了應用程序能夠圍繞著某個邏輯結構進行構建。這對于分布式系統(tǒng)的魯棒性是至關重要的。
Rails社區(qū)推崇敏捷的開發(fā)模式,即:通過各種迭代的采用和進程的靈活性,以方便項目的管理。
Rails的另一個亮點在于:由于它使用了Ruby代碼,這種“自文檔化(self-documenting)”的語言,因此我們沒有必要額外去產生單獨的文檔。這勢必提高了開發(fā)人員的工作效率。
對于Rails應用來說,我們唯一需要考慮的是它們的速度問題,因為它們運行速度并沒有基于Java的應用程序那么快。不過盡管如此,許多大型機構,包括:Airbnb、Yellow Pages、Groupon等,依然選用了Rails。
根據BuiltWith提供的統(tǒng)計數(shù)據,如今有826824個網站正在使用Ruby on Rails。
5. Symfony
Symfony是一個具有豐富功能的PHP框架。它在開發(fā)者社區(qū)廣受歡迎的原因來自其各種包(bundles)與組件(components)。
我們先來看看它的包。顧名思義,通過一組文件集合(包括:PHP文件、樣式表、JavaScript文件),它實現(xiàn)了諸如:博客頁面、購物車等功能。由于開發(fā)人員可以對不同的包進行重新配置、或重新運用到不同應用之中,因此它大幅降低了研發(fā)的整體成本。
另一方面,組件可以根據一些共同特征來簡化各種日常的任務,從而使得開發(fā)人員能夠更加專注于那些特定的業(yè)務功能。因此,開發(fā)人員既可以單獨地使用組件,也能夠在不影響其結構的前提下予以定制。同時,他們還能夠在其他PHP框架(如上面提到的Laravel)中使用到這些組件。
Symfony的另一個亮點是它的文檔化。那些符合PHP框架的文檔不但非常清晰、結構嚴謹,而且配有各種示例。也就是說,這些文檔能夠在闡明每一種組件的同時,為開發(fā)過程提供詳盡的注釋。同時,這些文檔也能夠經常被保持更新。
同樣,Symfony有著較為成功的大型社區(qū)支持。它在GitHub上擁有1400名貢獻者,這個數(shù)字比其他的PHP框架都高出許多。
然而,相對于其他的PHP框架而言,Symfony的模塊化比較慢。因此,對于一些較重的、且實時的應用程序,您可能需要采用其他的框架。
根據BuiltWith提供的統(tǒng)計數(shù)據,如今有9565個網站正在使用Symfony。
6.Yii
Yii仍然是一款基于“模型 - 視圖 - 控制器”的框架,而且非常適合于快速應用開發(fā)(RAD)。
該框架利用代碼的scaffolding(即:預先定義好代碼的模板),使得代碼的編寫效率更高。
由于Yii并不遵循像Symfony那樣“基于配置的規(guī)則約定(convention over configuration)”的原則,因此它比Symfony更為寬松。這無疑給有經驗的程序員帶來了更大的自由度。相反,初學者則會由于缺少必要的先導,而降低了編程效率。
此外,雖然Yii的組件比Symfony少,但是,Yii可以使用到Symfony的大多數(shù)組件。
在性能方面,Yii每秒能夠處理410個請求的效率,顯然超過了Symfony的每秒131個請求。可見,那些在同一時間擁有成千上萬個用戶在線訪問的社交網站,更適合用Yii來搭建。
同樣,Yii在GitHub上有超過700名貢獻者,可見其支持社區(qū)也算比較龐大的。
根據BuiltWith提供的統(tǒng)計數(shù)據,如今有70022個網站正在使用Yii框架。
7. MeteorJS
Meteor是一款全棧式的,適合于構建單頁面應用的JavaScript框架。該開源框架在本質上是同構的,也就是說,JavaScript可以同時運行在服務器端和客戶端。
由于開發(fā)人員可以只使用JavaScript來同時管理前端、后端、以及數(shù)據庫,因此它既簡化了流程,又加快了網站的開發(fā)進程。
另外,開發(fā)人員可以將它與Node.js協(xié)同工作,為各種平臺創(chuàng)建不同的實時應用。
通過Meteor原生的模塊化,開發(fā)人員能夠混合搭配使用各種組件,以自由地構建他們的項目。雖然該框架有著一定的規(guī)則約定,但是開發(fā)者們也有著一定的空間,他們可以根據自己的個人偏好進行網站的搭建。
Meteor的社區(qū)支持資源非常豐富。有一個類似Reddit(是一個社交新聞站點)的網站--Crater,它會持續(xù)跟蹤世界上所有關于Meteor的最新動態(tài)。Evented Mind則是另外一個包含了Meteor各種培訓視頻的網站。
根據BuiltWith提供的統(tǒng)計數(shù)據,如今有12413個網站正在使用MeteorJS。
原文標題:7 Popular Website Development Frameworks of 2018,作者:Dipanshu Upadhyay
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】