9 个开源 JavaScript 前端 Web 开发框架

对许多 JavaScript 框架选项的细分——它们的优势和关键特性。
191 位读者喜欢这篇文章。
Computer screen with files or windows open

Opensource.com

大约十年前,JavaScript 开发者社区开始见证 JavaScript 框架之间激烈的竞争。在本文中,我将介绍其中一些最著名的框架。重要的是要注意,这些都是开源 JavaScript 项目,这意味着您可以根据 开源许可证 自由使用它们,甚至可以为源代码和社区做出贡献。

如果您希望在我探索这些框架时跟随我,您可以观看我的视频。

不过,在开始之前,了解一些 JavaScript 开发者在讨论框架时常用的术语会很有用。

术语 定义
文档对象模型 (DOM) 网站的树状结构表示,其中每个节点都是表示网页一部分的对象。万维网联盟 (W3C) 是万维网的国际标准组织,负责维护 DOM 的定义。
虚拟 DOM 用户界面 (UI) 的“虚拟”或“理想”表示形式保存在内存中,并通过诸如 ReactDOM 之类的库与“真实”DOM 同步。要进一步探索,请阅读 ReactJS 的虚拟 DOM 和内部文档。
数据绑定 一种编程概念,旨在为访问网站上的数据提供一致的接口。Web 元素与 DOM 维护的元素的属性或特性相关联。例如,当您需要在网页表单中填写密码时,数据绑定机制可以与密码验证逻辑进行检查,以确保密码格式有效。

现在我们已经清楚了常用术语,让我们来探索一下有哪些开源 JavaScript 框架。

框架 关于 许可证 发布日期
ReactJS 由 Facebook 创建,目前最流行的 JavaScript 框架 MIT 许可证 2013 年 5 月 24 日
Angular 由 Google 创建的流行 JavaScript 框架 MIT 许可证 2010 年 1 月 5 日
VueJS 快速增长的 JavaScript 框架 MIT 许可证 2013 年 7 月 28 日
MeteorJS 功能强大的框架,不仅仅是一个 JavaScript 框架 MIT 许可证 2012 年 1 月 18 日
KnockoutJS 开源 Model-View-ViewModel (MVVM) 框架 MIT 许可证 2010 年 7 月 5 日
EmberJS 另一个开源 Model-View-ViewModel 框架 MIT 许可证 2011 年 12 月 8 日
BackboneJS 具有 RESTful JSON 和 Model-View-Presenter 模式的 JavaScript 框架 MIT 许可证 2010 年 9 月 30 日
Svelte 不使用虚拟 DOM 的开源 JavaScript 框架 MIT 许可证 2016 年 11 月 20 日
AureliaJS 现代 JavaScript 模块的集合 MIT 许可证 2018 年 2 月 14 日

为了提供背景信息,以下是基于每个框架的 NPM 包下载量的公开可用流行度数据,感谢 npm trends

Framework downloads graph

ReactJS

React page

ReactJS 由 Facebook 发明,它是当今 JavaScript 框架中明显的领导者,尽管它的发明时间晚于 Angular。React 引入了一个名为虚拟 DOM 的概念,这是一个抽象副本,开发人员可以在其中仅使用他们想要的 ReactJS 功能,而无需重写整个项目以在框架内工作。此外,React 项目活跃的开源社区绝对是其增长背后的主力。以下是 React 的一些主要优势

  • 合理的学习曲线——React 开发者可以轻松创建 React 组件,而无需用 JavaScript 重写整个代码。请在 ReactJS 的首页上查看 ReactJS 的优势以及它如何使编程更容易。
  • 针对性能进行了高度优化——React 的虚拟 DOM 实现和其他功能提升了应用程序的渲染性能。请参阅 ReactJS 的 描述,了解如何根据应用程序的性能对性能进行基准测试和衡量。
  • 出色的支持工具——ReduxThunkReselect 是构建结构良好、可调试代码的最佳工具。
  • 单向数据绑定——Reach 中使用的模型仅从所有者流向子级,从而更容易在代码中跟踪因果关系。 在 ReactJS 的数据绑定页面上阅读更多相关信息。

谁在使用 ReactJS?由于 Facebook 发明了它,该公司本身在其首页上大量使用 React,并且据说 Instagram 完全基于 ReactJS 库。您可能会惊讶地发现,其他知名公司,如 纽约时报Netflix可汗学院,也在其技术栈中实施了 ReactJS。

更令人惊讶的可能是 ReactJS 开发人员的职位空缺,正如您从 Stackoverflow 的研究中看到的那样。嘿,你可以参与一个开源项目并为此获得报酬。这真是太酷了!

 

ReactJS 的 GitHub 目前显示该开源项目有超过 1.3 万次提交和 1,377 位贡献者。它是一个在 MIT 许可证下的开源项目。

React GitHub page

Angular

Angular homepage

就开发者数量而言,React 现在可能是领先的 JavaScript 框架,但 Angular 紧随其后。事实上,虽然 React 是开源开发者和初创公司更受欢迎的选择,但大型企业往往更喜欢 Angular(下面列出了一些)。主要原因是,虽然 Angular 可能更复杂,但其统一性和一致性非常适合大型项目。例如,在我的职业生涯中,我曾使用过 Angular 和 React,我观察到大型公司普遍认为 Angular 的严格结构是一个优势。以下是 Angular 的其他一些主要优势

  • 设计良好的命令行界面:Angular 具有出色的命令行界面 (CLI) 工具,可以轻松引导和使用 Angular 进行开发。ReactJS 也提供了命令行界面以及其他工具,但 Angular 具有广泛的支持和出色的文档,正如您可以在 此页面上看到的那样。
  • 单向数据绑定——与 React 类似,单向数据绑定模型使框架不易受到不必要的副作用的影响。
  • 对 TypeScript 的出色支持——Angular 与 TypeScript 具有出色的对齐性,TypeScript 实际上是更强调类型强制的 JavaScript。它还可以转译为 JavaScript,使其成为强制类型以减少代码错误的好选择。

像 YouTube、NetflixIBMWalmart 这样的知名网站都在其应用程序中实施了 Angular。我个人是通过学习 Angular 开始前端 JavaScript 开发的。我曾参与过许多涉及 Angular 的个人和专业项目,但那是 Angular 1.x,当时称为 AngularJS。当 Google 决定将版本升级到 2.0 时,他们彻底改造了框架,然后它变成了 Angular。新的 Angular 是对以前的 AngularJS 的彻底转变,这赶走了一些现有开发者,同时也带来了新的开发者。

Angular 的 GitHub 页面在撰写本文时显示有 17,781 次提交和 1,133 位贡献者。它也是一个具有 MIT 许可证的开源项目,因此您可以随意将其用于您的项目或做出贡献。

 

Angular GitHub page

VueJS

Vue JS page

VueJS 是一个非常有趣的框架。它是 JavaScript 框架领域的新来者,但其受欢迎程度在几年内显着提高。VueJS 由 Evan Yu 创建,他是一位曾在 Angular 项目中工作过的 Google 前工程师。该框架变得非常流行,以至于许多前端工程师现在更喜欢 VueJS 而不是其他 JavaScript 框架。下图描绘了该框架随着时间的推移获得关注的速度。

Vue JS popularity graph

以下是 VueJS 的一些主要优势

  • 更简单的学习曲线——即使与 Angular 或 React 相比,许多前端开发人员也认为 VueJS 的学习曲线最低。
  • 体积小巧——与 Angular 或 React 相比,VueJS 相对轻量级。在其 官方文档 中,其大小仅约为 30 KB,而 Angular 生成的项目,例如,超过 65 KB。
  • 简洁的文档——Vue 拥有全面但简洁明了的文档。请亲自查看 其官方文档

VueJS 的 GitHub 显示有 3,099 次提交和 239 位贡献者。

Vue JS GitHub page

MeteorJS

Meteor page

MeteorJS 是一个免费开源的 同构框架,这意味着,就像 NodeJS 一样,它同时运行客户端和服务器端 JavaScript。Meteor 可以与任何其他流行的前端框架(如 Angular、React、Vue、Svelte 等)结合使用。

Meteor 被多家公司使用,例如 Qualcomm、Mazda 和 Ikea,以及 Dispatch 和 Rocket.Chat 等许多应用程序。请参阅其官方网站上的案例研究。

Meteor case study

Meteor 的一些主要功能包括

  • 数据在线传输——服务器发送数据,而不是 HTML,客户端渲染它。数据在线传输主要指的是 Meteor 在页面加载时形成与服务器的 WebSocket 连接的方式,然后通过该连接传输所需的数据。
  • 使用 JavaScript 开发一切——客户端、应用服务器、网页和移动界面都可以使用 JavaScript 设计。
  • 支持大多数主要框架——Angular、React 和 Vue 都可以与 Meteor 结合使用。因此,您仍然可以使用您最喜欢的框架,例如 React 或 Angular,但仍然可以利用 Meteor 提供的一些强大功能。

截至目前,Meteor 的 GitHub 显示有 22,804 次提交和 428 位贡献者。这对于开源活动来说相当多了!

Meteor GitHub page

EmberJS

EmberJS page

EmberJS 是一个基于 Model-view-ViewModel(MVVM) 模式的开源 JavaScript 框架。如果您从未听说过 EmberJS,您一定会惊讶于有多少公司正在使用它。Apple Music、Square、Discourse、Groupon、LinkedIn、Twitch、Nordstorm 和 Chipotle 都将 EmberJS 作为其技术栈之一。查看 EmberJS 的官方页面,了解使用 EmberJS 的所有应用程序和客户。

虽然 Ember 与我们讨论过的其他框架有相似的优点,但以下是它的一些独特区别

  • 约定优于配置——Ember 标准化命名约定并自动生成结果代码。这种方法学习曲线稍长,但可以确保程序员遵循最佳实践。
  • 成熟的模板机制——Ember 依赖于直接的文本操作,动态构建 HTML 文档,同时对 DOM 一无所知。

正如人们可能从许多应用程序使用的框架中预期的那样,Ember 的 GitHub 页面显示有 19,808 次提交和 785 位贡献者。这太棒了!

EmberJS GitHub page

KnockoutJS

KnockoutJS page

KnockoutJS 是一个独立的开源 JavaScript 框架,采用带有模板的 Model-View-ViewModel (MVVM) 模式。虽然与 Angular、React 或 Vue 相比,可能较少人听说过这个框架,但该项目在开发社区中仍然非常活跃,并利用了诸如

  • 声明式绑定——Knockout 的声明式绑定系统提供了一种简洁而强大的方式将数据链接到 UI。通常很容易绑定到简单的数据属性或使用单个绑定。在 KnockoutJS 的官方文档页面上阅读更多相关信息。
  • 自动 UI 刷新
  • 依赖跟踪模板

Knockout 的 GitHub 页面显示约有 1,766 次提交和 81 位贡献者。与其他框架相比,这些数字并不那么显着,但该项目仍在积极维护中。

Knockout GitHub page

BackboneJS

BackboneJS page

BackboneJS 是一个轻量级的 JavaScript 框架,具有 RESTful JSON 接口,并且基于 Model-View-Presenter (MVP) 设计范例。

据说该框架被 Airbnb、Hulu、SoundCloud 和 Trello 使用。您可以在 Backbone 的页面上找到所有这些案例研究。

BackboneJS 的 GitHub 页面显示有 3,386 次提交和 289 位贡献者。

BackboneJS GitHub page

Svelte

Svelte page

Svelte 是一个开源 JavaScript 框架,它生成用于操作 DOM 的代码,而不是包含框架引用。这种在构建时而不是运行时将应用程序转换为 JavaScript 的过程可能会在某些情况下略微提高性能。

Svelte 的 GitHub 页面在撰写本文时显示有 5,729 次提交和 296 位贡献者。

Svelte GitHub page

AureliaJS

Aurelia page

列表中的最后一个是 Aurelia。Aurelia 是一个前端 JavaScript 框架,它是现代 JavaScript 模块的集合。Aurelia 具有以下有趣的特性

  • 快速渲染——Aurelia 声称其框架的渲染速度比当今任何其他框架都快。
  • 单向数据流——Aurelia 使用基于可观察对象的绑定系统,将数据从模型推送到视图。
  • 使用原生 JavaScript 构建——您可以使用纯 JavaScript 构建网站的所有组件。

Aurelia 的 GitHub 页面在撰写本文时显示有 788 次提交和 96 位贡献者。

Aurelia GitHub page

这就是我在查看 JavaScript 框架世界中的新事物时发现的。 我错过了什么有趣的框架吗?请随时在评论区分享您的想法!

接下来阅读
User profile image.
Bryant Jimin Son 在 GitHub 担任 Octocat,这不是官方头衔,但他喜欢这样称呼自己。GitHub 是一家因托管世界上大多数开源项目而广为人知的公司。在工作中,他正在探索不同的 git 技术、GitHub Actions、GitHub 安全等。此前,他曾在 Red Hat 担任高级顾问,Red Hat 是一家以 Linux 服务器和开源贡献而闻名的技术公司。

6 条评论

这是对如此多选项的精彩概述!

也请查看 Sinuous

https://sinuous.netlify.app/

这个较新的库的工作方式与 Svelte 类似,无需虚拟 DOM 或 diffing,但没有自定义语法,也没有编译步骤。它像 Knockout 一样真正具有响应性,但声明式语法更类似于 React。

您可以为旧版浏览器选择 hyperscript 语法,为现代浏览器选择标记模板,如果您不介意编译步骤,也可以选择 JSX。也可能使用类似 Mustache 的模板。

在基准测试中,这是最快的框架之一,而且非常小,占用空间约为 2-4 KB,具体取决于您选择的可选功能。

还值得一提的是 Preact,它是 React 的一个非常流行的轻量级替代方案,具有相同的 API,大小仅为 3 KB

https://preact.reactjs.ac.cn/

为了好玩,我还想提一下 DotDOM

https://github.com/wavesoft/dot-dom

虚拟 DOM 库,具有类似 React 的有状态组件,大小只有令人难以置信的 0.5 KB!如果您需要一个足够小的库来捆绑到自定义元素或其他旨在供他人嵌入到其网站上的脚本中,那么它足够小以做到这一点 - 但仍然设法提供许多较大库的核心价值。

干杯!

感谢您与我们分享这篇文章。学习一些 JavaScript 开发者在讨论框架时常用的术语真的很有用。

我非常熟悉 React、Angular 和 Vue,但很高兴知道有这么多选择。同样有趣的是,只有 2 个框架是在 2016 年之后发布的。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.