翻譯:瘋狂的技術宅html
這是咱們第三次用 Real World example apps 對前端框架進行比較。 RealWorld example apps 爲咱們提供:git
RealWorld Appgithub
這不只僅是「todo」。一般「todo」並無傳達出在構建真正的程序時所需的足夠的知識和視角,。web
標準化編程
一個符合某些規則的項目。提供後端API、靜態標記、樣式和規範。後端
由專家撰寫或審覈前端框架
一個一致的、真正的項目,在理想狀況下,由相關技術的專家創建或審查。服務器
截至撰稿時爲止,在 RealWorld example app 的 repo 已經中有18個 庫或框架的實現。網絡
是否有大量的擁躉者並不重要。惟一要求是它是否出如今了 RealWorld 的代碼倉庫頁面上。
此程序須要多長時間才能顯示內容並變得可用?
應用有多大?咱們只會比較已編譯的 JavaScript 文件的大小。 CSS 對全部變體都是通用的,並從 CDN(內容分發網絡)下載。 HTML 也適用於全部變體。全部技術都編譯或轉換爲 JavaScript,所以咱們只比較這種文件的大小。
做者根據規範建立 RealWorld app 須要多少行代碼?公平地說,一些程序過於花裏胡哨,但它不該該產生重大影響。咱們量化的惟一文件夾是每一個程序中的 src/
。
咱們將經過檢查 Chrome 附帶的 Lighthouse Audit 的效果得分。 Lighthouse 返回的性能分數在 0 到 100 之間,0 是低分。
測試用的全部 Lighthouse Audit 設置
效果是基於如下指標的綜合得分
有關詳細信息,請查看 Lighthouse評分指南。
越早進行繪製和工做,用戶的體驗就越好。
表現得分(0 -100)—— 越高越好
注意:因爲缺乏 Demo程序,所以跳過了 PureScript。
大多數應用程序的得分都高於90,在性能方面,你可能感受不到太多的差別。
傳輸大小來自 Chrome 的 network 標籤中。 GZIPped 響應頭加上服務器提供的響應主體。這取決於框架的大小和你添加的額外依賴項,以及構建工具如何消除捆綁包中未使用的代碼。
文件越小,下載越快,解析越少。
傳輸大小以KB爲單位 - 越少越好
這裏發生了不少使人驚訝的事情。 Svelte —— 可以隱身的 UI 框架 —— 這是真正適用於它的妙語。 Stencil 這個基準測試中的新手也表現不錯。二者都相對較新,正在推進大小方面的限制。
咱們用了 cloc 計算每一個 repo 的 src 文件夾中的代碼行數。空行和註釋行不計入在內。
若是說調試是刪除軟件錯誤的過程,那麼編程必須是把它們加進去的過程 — Edsger Dijkstra
這顯示了給定庫、框架或語言的簡潔程度。根據規範,你須要多少行代碼才能實現幾乎相同的程序(其中一些會有更多的額外功能)。
#代碼行數 - 越少越好
注意 Imba:因爲 cloc 沒法處理 *.imba
文件而跳過了它。
注意 Elm:Elm 開發人員縱向的進行開發,所以代碼行數很高 —— 至少我被告知是這樣的 。
注意 Angular + ngrx:在 /libs
文件夾內完成的代碼行數計算,僅包括\*.ts
和 \*.html
文件。若是你以爲這是錯的,請告訴我正確的值是多少,以及你是如何計算的。
注意 Hyperapp:文章發佈時代碼行數不正確,感謝 Mateusz Kwasniewski 指出錯誤並提供了正確計算方法。
使用 ClojureScript 的 re-frame 爲你提供了最佳效果。 Clojure 以其異常豐富的表現力而著稱。若是你對代碼行數很在乎,應該關注 ClojureScript、AppRun 和 Svelte。
請記住,這不是一個針對同類產品比較。有些實現使用了代碼分割,有些則沒有。其中一些託管在 GitHub 上,一些託管在 Now,還有一些託管在 Netlify。你還想知道哪個是最好的嗎?最好的應該是可以知足你需求的那個!
**問:**你喜歡類型嗎?
**答:**要研究 Elm、PureScript 和 TypeScript 的話,請關注 Angular,AppRun,Dojo。
**問:**你寫一個佔用空間很是小的程序?
**答:**請關注 Svelte、Stencil 和 AppRun。
**問:**你想用有最少的代碼來進行維護嗎?
**答:**關注使用 ClojureScript 的 re-frame、AppRun 和 Svelte 。
**問:**想學習新東西嗎?
**答:**選擇一個你不知道的庫或框架!
由於 RealWorld repo 沒有完成它的實現。你能夠考慮貢獻本身的代碼!用你喜歡的庫或框架中實施解決方案,下次咱們將會把它加進去!
由於它比 To-Do 程序多一點。經過 RealWorld,並不意味着咱們會對薪水、維護、生產力、學習曲線等進行比較。其餘調查回答了其中一些的問題。咱們所說的 RealWorld 是一個鏈接到服務器,驗證並容許用戶進行 CRUD 操做的程序 —— 就像真實世界的程序同樣。
請參閱上面的#1,可是爲了以防萬一,再說一次:由於實現沒有在 RealWorld repo 中完成。我不作全部的實現 —— 這是社區的努力。若是想在比較中看到你的框架,請考慮參與。
上線時可用的那個(2019年3月),我相信你能夠從 GitHub repo中找到相關的信息。
最後再說一次,請見上文。 RealWorld repo 的實施並未完成,就這麼簡單。