2022 年最受欢迎的 NodeJS 框架

2022 年最受欢迎的 NodeJS 框架,Next 如此大规模采用的原因之一是它消除了构建您自己的后端的需要,NestJS特定于后端,Strapi在headless中风靡一时,Nuxt 构建在 Vue 之上,作为构建健壮应用程序的全栈框架。

2022 年最受欢迎的 NodeJS 框架

经过多年的积累,Node.js 仍然是最受欢迎的 JavaScript 运行时。但最近Node.js 框架的格局发生了巨大变化。越来越多的框架被构建为混合模式解决方案,不仅迎合后端,也迎合全栈开发人员。我们将探讨当前趋势,并探索最流行的 Node.js 框架。

Express.js 与 Node.js 本身一样古老,尽管 Express 仍然是一个了不起的后端框架,但一种新型的工具和套件正在留下他们的印记。

最值得注意的是,趋势已经转向元数据框架,其中像 React 这样的流行框架被重新用于支持全栈开发。这种方法的优点是您可以在特定框架中保持您的专业知识,但也可以同时处理后端的东西。换句话说,做全栈开发。

这些数据是如何获得的?

所有数据均来自调查,例如 State of JavaScript,  Stack Overflow Developer Survey,以及与各种项目合作的个人经验。此外,这不是基于哪个 Node.js 框架拥有最多 GitHub 星数评论。

相反,我比较了过去一年获得的星星数量。这是某个项目活跃程度的可靠指标,也是开发人员对其响应程度的可靠指标。

当前的 Node.js 趋势

在这篇文章中你会注意到的一件事是,本文中提到的许多框架都是基于前端框架的。这也称为元框架。那么,这是怎么回事,为什么要采用这种方法?

如果我们看一下 React 之类的东西,它呈现页面的方式是通过 CSR(Client-Side Rendering)完成的。一旦发出请求,浏览器就会得到一个没有实际页面内容的准 HTML 文件。因此,浏览器进行第二次循环以获取包含页面内容的 JavaScript 文档,然后传递它并呈现实际页面。

每次用户与页面交互时,这种情况都会继续发生。即使 HTML 保持原样,不同的路由请求也意味着浏览器必须不断来回呈现用户想要的内容。

这通常也称为 SPA 或单页应用程序。

以下是这种 CSR 方法的缺点:

  • 缓存 – 由于所有页面内容都是通过 JavaScript 呈现的,因此页面上没有可以缓存的实际 HTML 内容。
  • SEO — 虽然爬虫变得“更聪明”,但机器人索引完全依赖于 JavaScript 的内容存在明确的问题。
  • 渲染 - 在所有 JavaScript 完成加载之前,初始渲染通常很慢且无响应。所以,在这种情况下,像 Next 和 Nuxt 这样的框架背后的想法是采取前端框架,但通过 Node.js 给它 SSR(服务器端渲染)。

所以,在这种情况下,像 Next 和 Nuxt 这样的框架背后的想法是采取前端框架,但通过 Node.js 给它 SSR(服务器端渲染)。

#1: Next.js

不仅仅是一个 React 框架——Next.js 的流行度不断增长,这要归功于其高得离谱的开发速度。 Next.js 10 到 Next.js 12 只用了一年时间。

Next.js 背后的核心概念是它以 React 为基础,但通过自己的规范执行所有服务器端渲染结构。因为渲染是在服务器端完成的,所以您不必在客户端渲染页面,这在性能方面提供了巨大的好处,而且在它所关注的 SEO 方面也有好处。

Next 如此大规模采用的原因之一是它消除了构建您自己的后端的需要。一直以来,提供有意义的方式来优化您的应用程序的性能开箱即用。它由 Vercel 维护。

#2: Nest

NestJS 已经悄悄地吸引了后端社区的相当大的认可。 Nest 背后的主要理念之一是,虽然像 React 这样的框架加速了前端开发,但很多这样的框架都在努力解决应用程序架构的问题。 Nest 通过架构优先的方法解决了这个问题。

当然,这是特定于后端的。

Nest 基于三个核心组件(受 Angular 启发)– Controllers, Providers, and Modules。模块的使用是 Nest 试图解决复杂应用程序层次结构问题的方式。每个组件都可以分类在一个单独的模块中,您可以在其中配置自己的控制器、依赖项和特定的providers。

#3: Strapi

Headless 在当前前端风靡一时。 Strapi 在将自己定位为领先的 Headless CMS 框架之一方面做得很好。

那么,什么是 Strapi?在最实用的术语中,Strapi 是您前端应用程序的后端。从某种意义上说,Strapi 消除了您学习 Express 之类的框架的需要,因为它可以通过其 API 完成大部分的跑腿工作。

这包括通过自定义 UI、GraphQL 和 REST 的动态端点、用户管理(角色等)以及可以构建的单独插件界面来管理您的内容。 Strapi 完全与框架无关,几乎可以与任何语言、框架或前端库集成。

#4: Remix

Remix 是一个全栈框架,由制作 React Router 的人构建。

我确实相信 Remix 也是我们近年来看到的增长最快的全栈框架之一。那么,怎么来的?一方面,Remix 试图通过为常见状态代码和用户交互提供简洁的 API 来尽可能地与 Web 标准集成。

与传统框架不同,Remix 不会创建基于瀑布(组件)的结构。相反,数据在服务器端并行加载,然后作为 HTML 页面提供。这也意味着如果用户禁用了 JavaScript,基于 JavaScript 的功能(如表单提交)不会破坏网站。

#5: Nuxt

Nuxt 3(适用于 Vue 3)处于公开测试阶段:请留意。

Nuxt 构建在 Vue 之上,作为构建健壮应用程序的全栈框架。它也是一个元框架,旨在显着改善全栈 Vue 开发的体验。 Nuxt 支持 SSR、SPA 和静态生成页面。

Vue 开发人员的主要优势是 Nuxt 能够预渲染视图并将它们作为静态文件提供。这自然对 SEO 优化有很好的效果,并显着提高了交互性。但也有一些缺点。

Vue 有一个持久的客户端通道,而 Nuxt 没有。因此,在 Nuxt 已经呈现页面之后与 DOM 交互可能会很困难。

#6: SvelteKit

Svelte 在当前前端时代具有酷小孩的地位,团队正在开发 SvelteKit——一个建立在 Sapper 之上(取代它)的全栈框架。 SvelteKit 以复杂的基于文件的路由系统脱颖而出。

SvelteKit 的主要目标是通过消除一些更常见的瓶颈来加速 Web 开发。通过实现 Snowpack、Vite 和其他外部工具——SvelteKit 能够提供功能丰富的开发体验。

最后,SvelteKit 实现了 Hydration 的过程。为已在服务器端渲染的 DOM 元素保留活动状态的能力。

#7: Fastify


Fastify 框架是关于性能的,单独的基准测试表明它每秒可以处理多达 60,000 个请求。你可以通过使用 Hooks 和 Plugins 来扩展 Fastify(在已经很棒的工具之上)。而且,尽管不是 TypeScript 优先的框架,Fastify 确实支持 TypeScript。

说到插件,很多 Fastify 开发都是通过它们进行的。如此之多,以至于 Fastify 拥有一个官方存储库,用于存储社区制作和 Fastify 团队制作的插件。插件背后的想法是它提供了一个干净的系统架构,并且不需要跳转到替代框架。这使得 Fastify 在构建具有强大实时性能的低开销 API 时特别有用。

#8: Redwood

你喜欢 API 吗?你喜欢 JAMStack 吗?如果答案是肯定的,那么您会爱上 RedwoodJS。它是一个使用大量现代技术的全栈 Web 应用程序框架。这些技术包括 GraphQL、Prisma、Storybook 和 Jest。 Redwood 中的前端是建立在 React 之上的,您还可以获得全面的 TypeScript 支持。

#9: Express

Express已经失宠了吗?不完全是。该框架仍然非常受欢迎和喜爱,只是没有其他大玩家那么多。对于一个使用 Express 多年的团队来说,切换到其他东西是没有意义的,因为没有任何基本问题。事实上,很多框架仍然建立在 Express 之上。

#10: Adonis

Adonis 是为 Node.js 构建的 TypeScript-first 后端 MVC 框架。请记住,尽管 Adonis 将自己描述为一个后端框架,但使用它进行全栈开发同样适用。

开发人员喜欢 Adonis 的主要原因之一是它对 TypeScript 的原生支持。

此外,还支持 ORM(对象关系映射)、强大的安全实践和易于理解的文档。

最后但并非最不重要的一点是,Adonis 在基础层面上与 Node.js 生态系统集成,因此拥有 Node 开发经验是必不可少的。

#11: Keystone

此列表中的最后一个 Node.js 框架是 Keystone。就像 Express 一样,它几乎从第一天就已经存在。这使得 Keystone 成为一个成熟的框架,提供具体的工具和集成来创建对开发人员友好的体验。

Keystone 中的一些值得注意的特性(其中许多已经经过多年改进)包括通过 GraphQL API 实现的自动化 CRUD,您可以进一步扩展它。此外,您可以创建和实现自己的 React.js 组件。

Keystone 可用于各种开发领域,它适用于移动应用程序、实用网站、电子商务店面等等。