2020排行榜!Realworld前端框架的比較

2020-04-12     讀芯術

全文共1500字,預計學習時長6分鐘


圖源:unsplash


過去的三年我們都探討了這個話題,那麼今年的情況會是怎樣呢?


首先聲明,此文並不是關於未來前端選擇的比較,而是從三個方面(性能,大小,相似應用下的代碼行數)來進行小範圍的簡單比較。


讀者需要注意:


· 本文是在比較Realworld軟體——而不是正在研發中的軟體,這些軟體通常缺乏足夠的知識和想法,因此難以實現。

· 由專家撰寫或評審過——理想情況下,該技術領域的專家會評估此項目。

· 以某種方式標準化—— 一個符合特定規則的項目存在一種規範,提供後端API,靜態標記和樣式。


正在比較哪些庫/框架?


撰寫此文時,Realworld存儲庫中有24種conduit實現As,它們之間的從屬地位並不重要,唯一的判定標準是看它是否出現在RealWorld repo page上。


關注的是什麼指標?


性能—此應用程式需要多長時間才能顯示內容並可用?


大小—該應用程式有多大?我們將只比較已編譯的JavaScript文件的大小。HTML和CSS對所有變體都是通用的,並且是從CDN(內容交付網絡)下載的。所有技術都可以編譯或轉換為JavaScript,因此僅調整該文件的大小。


代碼行數—需要多少行代碼才能基於規範創建RealWorld應用程式?某些應用程式很麻煩,但應該不會產生重大影響。我們量化的唯一文件夾是每個應用程式中的src /。無論它是否是自動生成的,你仍然需要對其進行維護。


圖源:unsplash


標準#1: 性能


我們通過Chrome隨附的Lighthouse Audit查看性能得分,得分在0到100之間。有關更多詳細信息,請參閱《Lighthouse計分指南》。


審查設置


所有經過測試的應用程式的Lighthouse審核設置


基本原理


越早開發的應用程式,人們越早開始使用,用戶體驗相對也更好。


性能得分 (0–100) — 越高越好


評論


注意: 由於缺少演示應用程式,因此跳過了PureScript。


總結


通過Lighthouse Aud,可以看到在今年未維護/未更新的應用程式跌破90關口。當然如果得分> 90,可能也不會有很大的不同。AppRun,Elm和Svelte的表現令人印象深刻。


圖源:unsplash


標準#2: 大小


傳輸大小取決於Chrome網絡標籤,伺服器提供的GZIPped響應標頭以及正文。


這取決於框架的大小以及所添加的任何其他依賴項。同樣,構建工具可以很好地清除捆綁軟體中未使用的代碼。文件越小,下載速度越快,解析的次數也更少。


文件大小:KB — 文件越小,傳輸越快


評論


由於缺少演示軟體,因此跳過了PureScript。Angular + ngrx + nx,請不要怪我用Angular + ngrx + nx-檢查Chrome開發工具網絡標籤,如果有計算錯誤的地方,評論區見。


Rust +Yew + WebAssembly 包括 also.wasm file(s)


總結


Svelte和Stencil社區將其壓縮到20KB以下的出色操作,確實是一項成就。


標準 #3: 代碼行數


cloc可以計算每個存儲庫src文件夾中的代碼行數,空白行和注釋行不算在內,意義何在?


如果調試程序是移除軟體缺陷的過程,那麼編寫程序就是把軟體缺陷放進來的過程— EdsgerDijkstra


基本原理


這說明給定庫/框架/語言的簡潔程度。根據規範,你需要多少行代碼才能實現功能基本相同的應用程式(其中一些具有更多的功能)。


# 代碼行數— 越少越好


評論


由於cloc無法處理.svelte文件,因此跳過了Svelte。


由於cloc無法處理.riot文件,因此跳過了riotjs-effector-universal-hot。


Angular+ ngrx:使用/ libs文件夾完成的LoC計算僅包括.ts和.html文件。你的看法是什麼呢?歡迎探討。


總結


只有重新構架的Imba和ClojureScript才能在1000LoC下實施該應用程式。Clojure以異常表達而著稱。Imba第一次出現在這個行列里(去年是cloc,沒有.imba文件格式),並且看起來會繼續存在。如果您在意LoC,您就會知道該怎麼做。


圖源:unsplash


今年的結果就是這樣,歡迎在評論區討論你的看法~


留言點贊關注

我們一起分享AI學習與發展的乾貨

如轉載,請後台留言,遵守轉載規範

文章來源: https://twgreatdaily.com/zh-cn/EOEacXEBiuFnsJQVFY4s.html