Qwik——后现代框架

2025-06-10

Qwik——后现代框架

Qwik介绍

现代框架面临着巨大的性能挑战,它们并不能满足公司的需求。

其中一些框架已经将性能作为其真正的效用,例如 Svelte,但它们都没有达到真正的预期,因为它们希望让 Web 应用程序在运行时更快,但没有人寻找问题的根源。

Qwik 采取了不同的方法,将重点从“做得更快”转移到“做得更少”。这是一个将改变游戏规则的关键区别。最终,最快的工具可能是执行(重复)工作最少的工具。

Qwik 是由 Angular 的创建者 Misko Hevery 与 Ionic 的创建者 Adam Bradley 和 Gin Framework 的创建者 Manu Almeida 合作创建的框架。

这些都是 Web 开发的先驱。我认为我们面对的不仅仅是另一个 JavaScript 框架。或许我们应该为一个即将改变范式的新框架做好准备。

为什么选择 Qwik?

Qwik 的目标很明确:实现顶级性能、完美无瑕、零 JavaScript 和纯 HTML。是的,我们做到了。现在是时候了。Qwik 正在努力超越其他框架,并且已经取得了成功。

最后一个引入新概念的框架是 Astro,它引入了部分水合,这是 JavaScript 框架的一场革命。

例如,如果我们有一个以不需要 javascript 的文本开头的页面,我们就不会加载任何内容,但是如果我们向下滚动到需要 javascript 进行交互的组件,我们就会使用所需的 javascript 来填充页面。

Qwik 杀死了游戏,没有部分水合,但在第一次加载时水合为零,javascript 为 0。

例如,如果我们在页面底部有一个表单联系人,Angular、React 或 VueJS 将在第一次加载时加载所需的 javascript,Astro 将在我们向下滚动时加载它,Qwik 仅在我们单击表单的发送按钮时才会加载它,它不是在我们面前有表单时加载 javascript,而是在我们与其交互时加载。

Qwik 关键概念

Qwik,HTML 优先框架的理念很明确:尽可能快地实现交互(无需做任何事情,就能更快地完成任务)。

该框架尽可能延迟 JavaScript 的调用,只在绝对需要的时候才调用。重点在于首次加载。

因此,它只加载纯 HTML。为了实现这一点,Qwik 基于一个重要的概念。在本段中,我们将深入探讨它。

可恢复性

如今,现代框架竞相提升数据融合能力。Qwik 的独特之处在于其可恢复性。

这个概念的名称让我们了解了我们正在谈论的内容,“停止/恢复”,从服务器停止的地方恢复应用程序,而不是重新执行所有工作。

序列化事件处理程序是停止和恢复应用程序的关键。但这并非新鲜事,我们之前就通过 jQuery 实现过。

例如,使用纯 JavaScript。Qwik 的不同之处在于,使用 Qwik 就像使用 React 一样,它采用了现代 DX。

图片描述

如果我们深入思考上图,就能理解卷轴问题,也就是缩放问题。如果我们有一个庞大的 Web 应用程序,使用 Hydration 加载会花费大量时间。

即使采用部分水合,扩展仍将面临挑战,具有可恢复性的 Qwik 仅加载 HTML,这不需要花费太多时间。

只需一瞬间,您的应用程序就已加载到浏览器中。

预取

准确地说,Qwik 不会仅在您单击时下载每个文件,而是在第一次加载以显示页面(即交互式)之后,框架将开始使用服务工作者自动下载 Web 应用程序所需的代码,并将其存储在浏览器的缓存中,因此我们不会每次都向服务器发送请求,但它会立即从缓存中获取它,如果代码尚未下载,它将从服务器下载,这就是我们所说的预取。

因此,当我们说“加载 JavaScript”时,我们指的是从缓存中获取 JavaScript 代码,并仅在需要时执行。其他框架会在第一次加载时下载并执行 JavaScript 代码,这会导致很多性能问题。Qwik 从第一次加载开始即可进行交互,无需等待所有 JavaScript 代码下载完毕。

Qwik城市

2022 年 5 月 1 日,Hevery 在播客中表示,他们的目标是构建一个路由器,既能提供 MPA(多页面应用程序)路由的功能,又能兼具 SPA(单页面应用程序)路由的优势。换句话说,无需刷新页面即可进行 MPA 路由。

只渲染需要刷新的部分。这听起来可能像天方夜谭,但实际上已经有人做到了,他们做到了,它的名字叫 Qwik City。

所以 Qwik 是服务器端渲染和客户端渲染的混合体,它充分利用了两者的优势。

Qwik City 是专为 Qwik 设计的元框架,就像 Next.js 之于 React.js 一样。Qwik City 中的路由非常简单,它基于路由目录中的目录结构。

src/

└── routes/

    └── some/

        └── path/

            └── index.tsx       <https://example.com/some/path>

Enter fullscreen mode Exit fullscreen mode

借助我们的 0 JavaScript 元框架,应用程序无需任何 Qwik City 专用的 JavaScript 即可加载,但其功能远不止于此。它还提供:

  • 基于目录的路由
  • 嵌套布局
  • 基于文件的菜单
  • 面包屑
  • 支持使用 .tsx 或 .mdx 文件格式创作内容
  • 数据端点

结论

现代框架下载所有 javascript,然后执行所有 javascript。

Qwik 会下载一些 JavaScript 代码,但直到我们需要时才会执行。这个框架正在改变我们的思维模型。

我们认为 Qwik 将成为 JS 框架中的先驱之一。它提升了启动性能,这在现代框架中是一个真正的问题,但 Qwik 却解决了这个问题。

让我们展望未来,敬请期待,因为这是我们关于该框架的第一篇文章,当然也不会是最后一篇。在接下来的文章中,我们将深入探讨核心概念,并提供一些构建 Qwik 应用程序的示例。

本文已由 Havery Misko 先生(Angular 和 Qwik 的创建者)审阅,我们非常感谢他的贡献。

原始文章链接。

鏂囩珷鏉ユ簮锛�https://dev.to/this-is-learning/qwik-the-post-modern-framework-3c5o
PREV
Typescript 4.5 中模板字符串类型作为判别式
NEXT
Learning to Appreciate React Server Components In the beginning there was Marko Render-as-you-Fetch React Server Components Something Unexpected New Eyes Closing Thoughts