【转帖】2019 前端框架对比及评测

2019 前端框架对比及评测

https://nextfe.com/frontend-frameworks-benchmark-2019/

2019-04-16

Jacek Schae 原作,授权 LeanCloud 翻译。

我们将基于 RealWorld 示例应用对比前端框架。RealWorld 示例应用的特点:

  • RealWorld 应用

    比待办事项类应用更复杂。通常待办事项类应用不足以传达足够多的知识见解构建实际应用。

  • 标准化

    项目遵循特定规则。提供后端 API、静态标记语言、风格、API 规范。

  • 专业人士编写、审阅

    理想情况下,会是高一致性、高真实度的项目,由使用该技术的专业人士编写或审阅。

比较的库和框架

撰写本文时,RealWorld 示例应用仓库共包括 18 个 Conduit (Medium.com 克隆应用)实现。

本文不考虑框架的流行程度,RealWorld 仓库中列出的前端框架皆纳入对比范围。

测度

性能

应用显示内容、可以使用需要花多久?

尺寸

应用有多大?我们只比较编译后的 JavaScript 文件大小。所有应用使用同样的 CSS 样式文件,CSS 文件加载自 CDN。所有应用使用的 HTML 也是一样的。这些框架都支持编译或转换为 JavaScript,所以我们仅仅测量 JavaScript 文件大小。

代码行数

根据规范创建 RealWorld 应用需要多少行代码?公平地说,某些实现的功能要略微多一点,但这应该没有什么显著的影响。我们仅仅测量每个应用的 src/ 目录。

性能

我们将使用 Chrome 的 Lighthouse Audit 测试性能。Lighthouse 返回 0 至 100 间的评分。0 为最低分。

配置

所有测试均使用如下配置:

性能评分基于以下测度得出:

  • First Contentful Paint (页面中内容元素首次渲染时间)
  • First Meaningful Paint (页面中有意义的内容元素首次渲染时间)
  • Speed Index (页面加载过程视觉上的变化速度)
  • First CPU Idle (到 CPU 首次空闲的时间)
  • Time to Interactive (到页面可交互的时间)
  • Estimated Input Latency (预计输入延迟)

详见 Lighthouse 评分指南

TL;DR

首次渲染越快,到可以进行操作的时间越短,应用的用户体验就越好。

注意:我们跳过了 PureScript,因为它没有 Demo 应用。

结论

大部分应用的评分超过 90。所以,用户大概感觉不到这些框架的性能有什么大差别。

尺寸

传输尺寸根据 Chrome 开发者工具的网络标签页统计,包括服务器送达的响应头和响应体(经过 GZIP 压缩)。

这取决于框架的尺寸以及额外依赖的尺寸,还有构建工具精简未使用代码的效率。

TL;DR

文件越小,下载越快,需要解析的内容越少。(下图中的单位为 KB。)

结论

这方面有不少惊人的结果。Svelte,魔法消失 UI 框架,无愧其名。Stencil 是一个比较新的框架,表现优异。这两个框架相对而言都比较新,将尺寸推向了新的极限。

代码行数

我们使用 cloc 计算每个仓库的 src 目录的代码行数,不计空行和注释。为什么要比较代码行数?这是因为:

如果说调试是移除软件 bug 的过程,那么编程一定是植入 bug 的过程。

Edsger Dijkstra

TL;DR

下面的图表显示了给定的库/框架/语言有多凝练。根据规范实现几乎完全一样的应用(某些应用功能略多一点)需要多少行代码。

注意:我们跳过了 Imba,因为 cloc 无法处理 .imba 文件。Elm 开发者写代码喜欢分行,所以行数较多(至少别人是这么告诉我的)。Angular+ngrx 只计算了 libs 目录中的 .ts 和 .html 文件,如果你认为这么算不对,请告诉我正确的数字及其计算方法。本文刚发表时 Hyperapp 的代码行数计算有误,感谢 Mateusz Kwasniewski 指出正确的代码行数。

结论

就代码行数而言,使用 ClojureScript 的 re-frame 给出了炸裂??的结果。Clojure 以异常高的表达力而闻名。如果你在乎代码行数,应该了解下 ClojureScript、AppRun、Svelte。

总结

别忘了这并不是一个精确公平的对比。有些实现分离了代码,有些没有。有些部署在 GitHub 上,有些部署在 Now 上,有些部署在 Netlify 上。如果你仍然要问哪个最好?我只能说,最好的框架是最符合你需求的那个。

Q: 偏爱强类型检查?
A: 了解下 Elm、PureScript、TypeScript —— Angular、AppRun、Dojo.

Q: 想要一个非常轻量的框架?
A: 了解下 Svelte、Stencil、AppRun.

Q: 想维护尽可能少的代码?
A: 了解下 re-frame(使用 ClojureScript)、AppRun、Svelte.

Q: 想要学点新的?
A: 选择你不了解的框架!

FAQ

1. 为什么不对比框架 X、Y、Z?

因为 RealWorld 仓库 中的实现不完整。考虑下贡献代码!用你最喜欢的库/框架实现一下,我们会在下次对比中包含它们!

2. 为什么称它为 RealWorld?

因为它的功能要比 To-Do 应用复杂。RealWorld 并不意味着我们会对比薪资水平、维护水平、生产率、学习曲线等要素,有其他调研回答了这些问题中的一部分。RealWorld 的意思是这个应用会像真实世界项目一样,连接一个服务器,认证用户,允许用户增删改查。

3. 你为什么没纳入我最喜欢的框架?

请回过头去看看上文的第一问。不过我这里还是想强调下:因为 RealWorld 仓库 中的实现不完整。这些实现是社区共同努力的结果,而非我一人所为。如果你想在对比中看到自己最喜欢的框架,考虑下贡献代码。

4. 对比的是哪个版本的库/框架?

本文撰写时(2019 年 3 月)可用的版本。详见 RealWorld 仓库

5. 为什么没有对比某个流行得多的框架?

再一次,看看前面的问题。很简单,RealWorld 仓库 中的实现不完整。

感谢 Rich Harris 和 Richard Feldman 在发表前审阅本文。

如果你喜欢这篇文章,可以在 Twitter 上关注我。我只发编程、技术方面的推。

译者注:实现上的种种差异(比如 Vue 是否搭配 Vuex)及其他因素对结果会有很大影响,因此图表仅供参考,并不能准确地体现框架的高下。况且,框架的选型涉及众多因素,大多数场景下,有许多因素的权重远高于性能、尺寸、代码行数。所以,正如原文所说,最好的框架是最符合需求的那个。

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/10992026.html

时间: 2024-07-31 01:17:42

【转帖】2019 前端框架对比及评测的相关文章

最流行的5个前端框架对比

欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ 如今出现了大量的CSS前端框架,但真正优秀的框架只有少数几个. 本文将会比较其中五个最佳的框架.每个框架都有自己的优点和缺点,以及具体的应用领域,你可以根据自己的具体项目需求进行选择.此外,许多选项都是模块化的,允许你仅使用所需的组件,甚至可以混合使用来自不同框架的组件. 本文依据各个框架的GitHub流行度来顺序介绍. Bootstrap Bootstrap是目前可用框架中无可争议的领导者.其人气日益增长,你可以放心的选择

主流前端框架对比:Vue.js , React, Angular.js

个人认为Vue.js的文档最恳切.我认为结合文档和遇到问题Google答案的匹配度来讲:Vue.js > ReactJS > AngularJS > Angular 2 如何使用Vue.js? 1.安装 (1)script 如果项目直接通过script加载CDN文件,代码示例如下: <script src="http://webapp.didistatic.com/static/webapp/shield/z/vue/vue/1.0.24/vue.min.js"

[开发总结]富文本前端框架对比分析

[排序不分先后,只是标记数量] 1. 如果你想直接引入,完全不定制,扔进项目就直接用 CKEditor TinyMCE Froala Quill Summernote(框架不太友善) Trix 2. 想有非常高度的定制 可以看看 Slate.js,它基于 React.js. 用了 Slate.js 的知名产品有 Taskade,Taskade 的编辑器非常漂亮而且格式很多. 如果想开发和 Taskade 一样的编辑器,我觉得用如上里任何一个现成编辑器都是很难开发出来的(甚至不可能,因为要改动那么

为什么要学习Vue——前端框架角度

什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面而后者是从目的方面给出的定义. 可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计.协作构件之间的依赖关系.责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系.因此构件库的大规模重用也需要框架. 构件领域框架方法在很大程度上借鉴了硬件技

最流行前端开发框架对比评测

如今,各种开发框架层出不穷,各有千秋.哪些是去年较受开发者关注的呢?前不久,云适配根据Github上的流行程度整理了2014年最受欢迎的6个前端开发框架,并进行对比说明,希望帮助有需要的朋友选择合适自己的前端框架. 1. Bootstrap Bootstrap毫无疑问是现今框架的领导者.他不仅仅流行,每天用户量也在不断增长.你可以相信,这个工具不会让你失望,你也可以单独使用它制作自己的网页. 创建者:Mark Otto and Jacob Thornton 发布:2011 当前版本:3.3.1

前端框架2019 云开发

1 .MUI 最接近原生APP体验的高性能前端框架 http://dev.dcloud.net.cn/mui/ 2.Mint UI 基于 Vue.js 的移动端组件库 https://mint-ui.github.io/#!/zh-cn 3.iView webapp一套高质量的 微信小程序 UI 组件库 https://weapp.iviewui.com/?from=iview 4.优秀的基于VUE移动端UI框架合集 https://www.cnblogs.com/dupd/p/7735450.

前端框架相关

WebMIS 基于CI的PHP免费开源框架 http://www.ksphp.com/docs/WebMIS/other_chart.html Bootstrap 简洁.直观.强悍的前端开发框架,让web开发更迅速.简单. http://www.bootcss.com/ 前端开发框架对比 http://www.ibm.com/developerworks/cn/web/1404_wangfx_jsframeworks/ H-ui概述 - H-ui前端框架官方网站 http://www.h-ui.

90网论坛推荐10大H5前端框架,建议好好学习一下

作为一名做为在前端死缠烂打6年并且懒到不行的攻城士,这几年我还是阅过很多同门从知名到很知名的各种前端框架,本来想拿15-20个框架来分享一 下,但在跟几个前辈讨教写文章的技巧时果断被无情的打击了,所以这里我还是低调的只拿出10个框架来个大锅乱炖来简单介绍,凑够字数也就全剧终了. 原本写这篇文章想围绕着 CSS 框架来的,但因为目前界内比较流行并遍地开花的主要还是 JS+CSS 模式的框架,并且自己靠着一点 JS 功 底,就想专门针对 CSS,所以最后来个大锅乱炖都大致聊聊.下面的框架也没有什么先

Android &amp;Swift iOS开发:语言与框架对比

转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_source=infoq&utm_medium=articles_link&utm_content=link_text 从Android到Swift iOS开发:语言与框架对比 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还