React、Vue、Angular、Svelte 对比
在本文中,我将介绍 React、Vue、Angular 和 Svelte 这几个顶级 JavaScript 前端框架,它们在某些方面表现最佳,并最终选择最适合你的框架。我们将考察五个因素:受欢迎程度、社区/资源、性能、学习曲线和实际案例。在深入探讨这些因素之前,我们先来了解一下这些框架。
🔵 React
开发者:Facebook
开源:是
许可证:MIT 许可证
首次发布:2013 年 3 月
Github Repo:https://github.com/facebook/react
描述:React 是一个用于构建用户界面的 JavaScript 库。
优点:
- 易于学习和使用
- 基于组件:可重用代码
- 性能卓越、速度快
- 大型社区
缺点:
- JSX 是必需的
- 文档不完善
🟢 Vue
开发者:Evan You
开源:是
许可证:MIT 许可证
首次发布:2014 年 2 月
Github Repo:https://github.com/vuejs/vue
描述:Vue.js 是一个渐进的、可逐步采用的 JavaScript 框架,用于在 Web 上构建 UI。
优点:
- 性能卓越、速度快
- 基于组件:可重用代码
- 易于学习和使用
- 良好且直观的文档
缺点:
- 与 React 等框架相比,所需资源更少
- 有时过于灵活
🔴 角度
开发者:Google
开源:是
许可证:MIT 许可证
首次发布:2016 年 9 月
Github Repo:https://github.com/angular/angular
描述:Angular 是一个
使用 Typescript/JavaScript 和其他语言构建移动和桌面 Web 应用程序的开发平台。
优点:
- 快速的服务器性能
- MVC架构实现
- 基于组件:可重用代码
- 良好且直观的文档
缺点:
- 学习曲线陡峭
- Angular 非常复杂
🟠 Svelte
开发者:Rich Harris
开源:是
许可证:MIT 许可证
首次发布:2016 年 11 月
Github Repo:https://github.com/sveltejs/svelte
描述:Svelte 是一种构建 Web 应用程序的新方法。它是一个编译器,可以获取声明式组件并将其转换为高效的 JavaScript,从而精准地更新 DOM。
优点:
- 没有虚拟 DOM
- 真正的反应
- 易于学习和使用
- 基于组件:可重用代码
缺点:
- 小社区
- 变量名称和语法混乱
第一个因素:受欢迎程度
所有这些选项都非常流行,并且被大量开发人员使用。我将在 Google 趋势、NPM 趋势和 Stackoverflow 2020 调查结果中比较这四个框架,看看哪一个最受欢迎。
注意:请记住,受欢迎并不意味着它拥有最大的社区和资源。
谷歌趋势
Google 趋势衡量的是特定主题的搜索次数。我们来看看结果:
注意:React 为蓝色,Angular 为红色,Svelte 为金色,Vue 为绿色。
上图展示了过去 5 年这 4 个前端框架的趋势。可以看到,Angular 和 React 的搜索量遥遥领先,其中 React 的搜索量甚至超过了 Angular。Vue 居中,而 Svelte 显然是搜索量最少的框架。虽然 Google Trends 提供了搜索结果数量,但可能存在一定的误导性,所以让我们来看看 NPM 的趋势。
NPM 趋势
NPM Trends 是由 John Potter 创建的一款工具,用于比较 NPM 软件包的流行度。它可以衡量某个 NPM 软件包的下载次数。
如你所见,就 NPM 软件包下载量而言,React 显然是最受欢迎的。Angular 和 Vue 在图表上非常相似,它们排名交替上升,而 Svelte 再次垫底。
Stackoverflow 2020 年调查
2020年2月,近6.5万名开发者填写了Stackoverflow调查。这项调查最能体现开发者社区的实际使用情况、喜好、担忧和需求。
以上是最流行的 Web 框架的信息。如你所见,React 和 Angular 分别位列第二和第三,但 React 仍然遥遥领先。Vue 则位于中间位置,但 Svelte 却不见踪影。
以上是最受欢迎的 Web 框架的结果。如你所见,React 仍然排名第二,而这次 Vue 则位列第三。Angular 处于中间位置,但 Svelte 再次落选。
注意:Angular.js 不是 Angular
以上是最令人望而生畏的 Web 框架。如你所见,React 和 Vue 排名靠后(这很好),而 Angular 是最令人望而生畏的 Web 框架之一。这是因为 React 和 Vue 的开发者经常拿 Angular 开玩笑,主要是因为它的前身是Angular.js。Svelte不在这个列表中,这对该框架来说是个好消息。
解释 Svelte 的“糟糕”结果
有人可能会说,与同类别的其他三个框架相比,Svelte 的表现不佳。你说得对。Svelte 是这个领域的新手,使用或了解它的人并不多。想想早期的 React、Vue 或 Angular:Svelte 目前就是这样的。大多数前端框架的比较都是在 React、Vue 或 Angular 之间进行的,但我认为 Svelte 很有前途,所以我想把它也纳入到这次的比较中。在其他大多数因素中,Svelte 的排名都相当高。
总结第一个因素:受欢迎程度
从三种不同的趋势/调查中,我们可以得出结论,React 是三者中最受欢迎的,但 Vue 和 Angular 紧随其后。
受欢迎程度:
- 反应
- 角度
- Vue
- 苗条
注意:由于 Angular 和 Vue 非常接近,因此很难在它们之间进行选择,但我认为 Angular 目前略胜 Vue 一筹。
第二个因素:社区和资源
这个因素是关于哪个框架拥有最好的社区和资源。这是一个至关重要的因素,因为它可以帮助你学习技术,并在遇到困难时获得帮助。我们将研究这些框架背后的课程和社区规模。让我们开始吧!
反应
React 拥有海量资源和社区成员的支持。首先,他们有一个Spectrum 聊天室,通常有大约 200 名开发者在线为你提供帮助。此外,他们还有大量的 Stackoverflow 开发者愿意为你提供帮助。Stackoverflow 上有 262,951 个关于 React 的问题,这是最活跃的 Stackoverflow 标签之一。
React 也有很多资源和教程。如果你搜索“React 教程”,会有无数的教程等着你。
以下是我推荐的 React 入门教程:
免费:https://youtu.be/4UZrsTqkcW4
付费:https://www.udemy.com/course/complete-react-developer-zero-to-mastery/
Vue
Vue 也拥有丰富的资源和庞大的社区,但规模不如 React。Vue 的Gitter 聊天室拥有超过 19,000 名成员。此外,他们还有一个庞大的 Stackoverflow 社区,其中包含 68,778 个问题。
Vue 真正出彩的地方在于它的资源。Vue 的资源比我想象的还要丰富。
以下是我推荐的 Vue 入门教程:
免费:https://youtu.be/e-E0UB-YDRk
付费:https://www.udemy.com/course/vuejs-2-the-complete-guide/
角度
Angular 拥有庞大的社区。他们的Gitter 聊天室有超过 22,489 位成员,随时准备为您提供帮助。此外,他们在 Stackoverflow 上提出的问题超过 238,506 个。
与 React 和 Vue 一样,Angular 也拥有大量的资源来帮助你学习这个框架。这些资源的缺点是大多数都已经过时了(1-2 年前的),但你仍然可以找到一些很棒的教程。
以下是我推荐的 Angular 入门教程:
免费:https://youtu.be/Fdf5aTYRW0E
付费:https://www.udemy.com/course/the-complete-guide-to-angular-2/
苗条
Svelte 的社区正在不断发展壮大,同时仍然拥有许多高质量的教程和资源。这里有一份关于 Svelte 及其社区的精彩指南:https://svelte-community.netlify.app。他们有一个不错的 Stackoverflow 社区,有超过 1,300 个问题。此外,他们还有一个很棒的Discord 社区,平均在线成员超过 1,500 人。
尽管 Svelte 只是最近才登上世界舞台,但它有很多很棒的教程和资源。
以下是我推荐的 Svelte 入门教程:
免费:https://www.youtube.com/watch?v
=zojEMeQGGHs&list=PL4cUxeGkcC9hlbrVO_2QFVqVPhlZmz7tO 付费:https://www.udemy.com/course/sveltejs-the-complete-guide/
总结第二个因素:社区和资源
仅从 Stackoverflow 社区和可用资源来看,我们可以得出结论,所有这 4 个框架都拥有庞大的社区和可用资源。
社区与资源:
- 反应
- Vue 和 Angular*
- 苗条
*我真的无法在这两者之间做出选择!
第三个因素:绩效
在本篇中,我将探讨哪些框架性能最佳。本篇主要包含三个部分:速度测试、启动测试和内存分配测试。我将使用这个网站来比较所有框架的速度。
速度测试
本次测试将比较各个框架在一组任务中的表现,并了解它们完成任务的速度。让我们来看看结果。
如您所见,仅从颜色上看,Svelte 和 Vue 确实是此类别中性能最高的。此表一侧是操作的名称,另一侧是结果。在表格底部,我们可以看到称为“减速几何平均值”的内容。“减速几何平均值”是衡量框架整体性能和速度的指标。由此,我们可以得出此类别的排名:
- Vue-1.17 减速几何平均值
- Svelte - 1.19 减速几何平均值
- React & Angular - 1.27 减速几何平均值
启动测试
启动测试衡量的是这些框架的“启动”时间。我们来看下表。
如您所见,Svelte 无疑是赢家。在每一项性能测试中,Svelte 都表现出色,速度惊人(如果您想了解 Svelte 是如何做到的,请转到“Svelte 为何如此高效?”部分)。根据这些结果,我们可以创建此类别的排名。
- 苗条
- Vue
- 反应
- 角度
记忆测试
内存测试旨在了解哪个框架在同一测试中占用的内存最少。让我们来看看结果吧。
与启动测试类似,Svelte 明显处于领先地位。Vue 和 React 的表现相当接近,而 Angular(再次)性能最差。由此,我们可以得出这个类别的排名。
- 苗条
- Vue
- 反应
- 角度
Svelte 为何性能如此出色?
TL;DR:
- 没有虚拟 DOM
- 编译为JS
- 小捆
在了解 Svelte 性能如此之高的原因之前,我们需要先了解 Svelte 的工作原理。Svelte 不会编译成 JS、HTML 和 CSS 文件。你可能会想:什么!?没错,它不会编译成 JS、HTML 和 CSS 文件,而是编译高度优化的 JS 文件。这意味着应用程序无需任何依赖即可启动,而且运行速度极快。这样就无需虚拟 DOM。你的组件会被编译成 JavaScript,DOM 无需更新。此外,由于它以高度优化的小型 JavaScript 包形式编译,因此占用的内存很少。
总结第三个因素:性能
Svelte 在这方面取得了巨大的进步,远远超过了其他框架!让我们从这三个方面对这些框架的性能进行排名。
- 苗条
- Vue
- 反应
- 角度
第四个因素:学习曲线
在这一要素中,我们将探讨构建真实世界(仅限前端)应用程序所需的时间以及难易程度。如果你想快速上手这个框架,这是最重要的因素之一。让我们开始深入探讨吧。
反应
React 非常容易学习。几乎不需要花费任何时间就能学会,甚至可以说,如果你精通 JavaScript 和 HTML,你一天就能学会基础知识。既然我们想知道构建一个真实项目需要多长时间,以下是你需要学习的内容列表:
- React 的工作原理
- JSX
- 状态
- 道具
- 主要钩子
- useState
- useEffect
- useRef
- 使用备忘录
- 成分
- NPM、Bebel、Webpack、ES6+
- 函数组件与类组件
- React 路由器
- 创建 React App、Next.js 或 Gatsby
- 可选但推荐:Redux、Recoil、Zustand 或 Providers
Vue
在我看来,构建一个真正的项目,Vue 比 React 要花费更多时间。只要稍加练习,你就能用不到 3 天的时间学习 Vue 的基础知识。虽然 Vue 的学习时间更长,但它绝对是学习速度最快的流行 JavaScript 框架之一。以下是你需要学习的内容:
- Vue 的工作原理
- .vue 文件
- NPM、Bebel、Webpack、ES6+
- 状态管理
- Vuex
- 成分
- 创建 Vue 应用/Vue CLI
- Vue 路由器
- 声明式渲染
- 条件和循环
- Vue 实例
- Vue 简写
- 可选:Nuxt.js、Vuetify、NativeScript-Vue
角度
Angular 是一个庞大的框架,比本次比较中的任何其他框架都要庞大得多。这或许就是为什么 Angular 的性能不如 React、Svelte 或 Vue 等其他框架的原因。学习 Angular 的基础知识可能需要一周甚至更长时间。以下是使用 Angular 构建真实应用需要学习的内容:
- Angular 的工作原理
- 打字稿
- 数据类型
- 定义类型
- 类型推断
- 接口
- 联合类型
- 函数类型定义
- 双向数据绑定
- 依赖注入
- 成分
- 路由
- NPM、Bebel、Webpack、ES6+
- 指令
- 模板
- HTTP 客户端
苗条
有人可能会说,Svelte 是本次比较中最容易学习的框架。我同意这一点。Svelte 的语法与 HTML 文件非常相似。我认为你可以在一天内学会 Svelte 的基础知识。以下是使用 Svelte 构建真实应用所需学习的内容:
- Svelte 的工作原理
- .svelte 文件
- NPM、Bebel、Webpack、ES6+
- 反应性
- 道具
- 如果、否则、否则如果/逻辑
- 活动
- 绑定
- 生命周期方法
- 上下文 API
- Svelte 中的状态
- Svelte 路由
总结第四个因素:学习曲线
所有这些框架(尤其是 Vue、Svelte 和 React)都非常容易学习,尤其是对于那些已经精通 JavaScript 和 HTML 的人来说。让我们根据学习曲线对这些技术进行排名!
(按学习最快到学习时间最长的顺序排列)
- 苗条
- 反应
- Vue
- 角度
第五个因素:现实世界的例子
在这个因素中,也就是最后一个因素,我们将研究一些使用该特定框架的实际应用示例。在这个因素的最后,我们不会对这些技术进行排名,但您可以自行决定最喜欢哪个框架的语法和运行方式。让我们开始吧!
反应
现实世界中使用 React 的五大公司:Facebook、Instagram、Whatsapp、Yahoo!、Netflix
在 React 中显示“Hello World”:
import React from 'react';
function App() {
return (
<div>
Hello World
</div>
);
}
Vue
现实世界中使用 Vue 的五大公司:NASA、Gitlab、Nintendo、Grammarly、Adobe
在 Vue 中显示“Hello World”:
<template>
<h1>Hello World</h1>
</template>
角度
现实世界中使用 Angular 的前 5 家公司:谷歌、微软、德意志银行、福布斯、PayPal
在 Angular 中显示“Hello World”:
import { Component } from '@angular/core';
@Component ({
selector: 'my-app',
template: <h1>Hello World</h1>
,
})
export class AppComponent;
苗条
现实世界中使用 Svelte 的前 5 家公司:阿拉斯加航空、Godaddy、飞利浦、Spotify、纽约时报
在 Svelte 中显示“Hello World”:
<h1>Hello world</h1>
总结第五个因素:现实世界的例子
哇!我们日常使用的某些大型公司也在使用我们使用的框架。这表明所有这些框架都可以用来构建像这些家喻户晓的巨头一样庞大的应用程序。而且,所有这些框架的语法都非常直观易学。您可以决定自己最喜欢哪一个!
结论
我知道你想知道所有这些框架的排名。这确实要看具体情况,但为了满足你对排名的渴望,我先给出我的个人看法:
- 苗条
- 反应
- Vue
- 角度
以上是我的排名,但基于这五个因素,选择你最喜欢的框架,并让自己每天都能在其中编码,它们都很棒。希望你觉得这篇文章很有趣,并且可能学习了一个新的框架(我打算学习 Svelte)!请告诉我你使用的前端框架是什么,以及你使用它的原因。感谢阅读!
亨利
文章来源:https://dev.to/hb/react-vs-vue-vs-angular-vs-svelte-1fdm