它可以被认为是 HTML 语言的扩展(因此得名),并且通常被视为库而不是框架。然而,这个界限是模糊的。《why htmx is another framework》(https://htmx.org/essays/is-htmx-another-javascript-framework/)这篇文章解释了为什么 htmx 是另一个框架。
如果你需要给一个静态站点增强交互性,或者你的应用程序是由“服务端驱动的”,那么通过仅使用 HTML hx-* 属性的组合,在不需要编写任何 JavaScript 的情况下,即可实现数据获取等功能。
在新功能中,对 web components(“Custom Elements”)的支持是个好消息。说到 web components,Solid(第 8 名)的创建者 Ryan Carnato写了《为什么 Web Components 不是未来》 (《Web Components Are Not the Future》 https://dev.to/ryansolid/web-components-are-not-the-future-48bh),引起了一些争议。Lea Vera 在这篇文章中给出了一个有趣的回应,她认为我们应该使用 “我们认为最有成效的任何工具”。
第三名:Svelte
Svelte 也发布了版本 5 。最大的变化是引入了 “runes”,这是一种声明反应式状态的显式机制。值得一提的是,Svelte 在 State of JS (https://2024.stateofjs.com/en-US/libraries/front-end-frameworks/) 结果中的正面评价最高。
React 生态
2024 年,React 自相矛盾地变得更加固执己见,也变得不那么固执己见。
一方面,随着 Server Components 和 Server Functions 的引入,React 变得更加固执己见,将开发人员引导到跨线运行的架构。另一方面,随着这些新的原语被多个框架采用和抽象化,每个框架都采用自己的方法,它变得不那么固执己见。
该类别中的新成员是 Web 服务器 Hono,位居第二。它可以被视为 Express(尽管已有 15 年历史,但排名第 15 位)的现代替代品,并且能够在多个 JavaScript 运行时中运行:Node.js,还有 Deno、Bun 以及 Lambda 和 Cloudflare Workers 等无服务器(serverless)环境。它以其极小的体量而著称。如有兴趣,可阅读其创作者的故事(《The story of web framework Hono, from the creator of Hono》https://blog.cloudflare.com/the-story-of-web-framework-hono-from-the-creator-of-hono/)。
今年最大的趋势之一是 React Native 中对 web/universal 支持的日益重视。Expo Router 在弥合 Web 原生差距方面取得了重大进展,引入了 Expo DOM 组件(“use dom”)来实现 React Web 和 universal React 之间的增量迁移。这也可以从 Meta 从 React Native for Web 转向更专注于 Web 的 React Strict DOM 和 Stylex 中观察到,他们内部正在使用这些 Strict Dom。此外,大多数最热门的项目都集中在 web/native 的统一上。
样式仍然是生态系统中的一个关键焦点。这在 Yoga v3(React Native 样式引擎)中尤其明显,它为内置的 React Native 样式带来了许多增强功能,这主要是由 Meta 在 Instagram 和 Facebook for Quest(使用 React Android 构建)等第一方应用程序上的工作驱动的。与此同时,社区驱动的解决方案继续蓬勃发展,多种方法和观点通常都将 Web 的最佳部分带到 native。
展望未来,我预计 AI 将在原生开发工具和应用程序体验中发挥更大的作用。Expo Router 的通用 React Server Components 的早期预览版可能会激发新的可组合服务器库的出现。此外,原生界面可能会进一步发展,更多地绑定到 SwiftUI 和 Jetpack Compose 中。
我还预测,随着 Expo DOM 组件的引入和对 (EAS Build) 等单命令应用程序部署工具的持续改进,native 社区将变得更大,使其成为所有开发人员更加熟悉和令人兴奋的空间。
Transformers.js 是一个 JavaScript 库,它将最先进的自然语言处理(NLP)模型(如 Hugging Face 中的模型)直接引入浏览器和 Node.js。它使开发人员能够在本地运行 AI 模型,而无需依赖云 API,从而使 NLP 任务更快、更私密且更易于访问。可以在这个文章(《Using Transformers.js for AI in the Browser》https://www.raymondcamden.com/2024/12/03/using-transformersjs-for-ai-in-the-browser)中,了解如何检测图像中的情绪和物体。
第五名:Vercel AI SDK
Vercel AI SDK 是将 AI agents 集成到 Web 应用程序中的绝佳工具。SDK 提供了一个抽象东西,允许连接到任何 LLM。它与 Next.js 应用程序无缝协作,使开发人员能够利用流式传输等功能创建卓越的用户体验。虽然它在 agent 编排方面没有 LangChain 的灵活性,但它通常被认为是 TypeScript 生态系统中 LLM 交互的最佳选择。
Astro 5: 用于构建内容驱动网站的 Web 框架,因其出色的开发体验而受到赞誉。它引入了一个新的内容层,以灵活且类型安全的方式从任何来源获取内容。
新公司 VoidZero 致力于为 JS 生态系统提供高性能和统一的开发工具链。
Vite 6 具有新的环境 API(《Increasing Vite's potential with the Environment API》https://green.sapphi.red/blog/increasing-vites-potential-with-the-environment-api),为扩展到浏览器之外开辟了新的可能性。