Hacker News 中文摘要

RSS订阅

Svelte 如此之快 -- Svelte is that fast

文章摘要

网上许多JavaScript框架性能测试过于简单或不公平,缺乏真实场景。作者在开发新应用时寻找学术研究,发现2021年一项比较Angular、React、Vue、Svelte和Blazor的研究仍具参考价值。目前约97%的网站使用JavaScript,其中80%依赖框架。

文章总结

标题:Svelte确实快得惊人

网络上有大量基准测试声称比较各种JavaScript框架的性能,但这些测试往往过于简单,无法反映真实场景,或者将功能完备的框架与轻量级库进行不恰当的比较。

在选择新的Web应用程序开发框架时,我寻找了关于JavaScript框架性能的学术研究。虽然相关研究不多,但发现了一项2021年对Angular、React、Vue、Svelte和Blazor的比较研究,尽管有些过时,但仍具参考价值。

研究发现,现代Web框架通过封装DOM API并提供声明式语法,简化了UI状态管理。框架采用两种主要方法保持DOM树与组件树同步:

  1. 虚拟DOM(vDOM)渲染:React、Vue和Blazor使用此方法,通过比较树结构计算最小变更集,时间复杂度通常为O(n)。
  2. 数据绑定:Angular和Svelte采用此方法,组件直接通过跟踪数据绑定值更新对应的DOM部分。

性能测试显示,Svelte在所有基准测试中表现最佳。以下是关键发现:

  1. 创建静态元素时,Svelte最快,React最慢:

    • 创建50,000个元素:Svelte仅需98ms,React需3559ms
  2. 创建二叉树组件时,Svelte仍最快,Blazor最慢:

    • 创建32,768个组件:Svelte需482ms,Blazor需3644ms
  3. 更新组件时,采用数据绑定的Vue和Svelte优势明显:

    • 更新32,768个组件:Vue和Svelte均<1ms,React需379ms

Svelte的优异表现归因于: 1. 自动检测"脏"组件的响应式系统 2. 优化编译器生成的组件更新代码会忽略静态内容 3. 采用基于数据绑定的渲染策略而非虚拟DOM

值得注意的是,基于WebAssembly的Blazor性能显著落后于JavaScript框架,但尚不确定这是Blazor本身的问题还是WebAssembly的固有局限。

这项研究表明,在选择前端框架时,渲染策略对性能有重大影响,而Svelte的架构设计使其在各类操作中都展现出卓越的性能优势。

评论总结

以下是评论内容的总结:

1. 对框架版本过时的批评

  • 多位评论者指出文章使用了过时的框架版本(React 17、Svelte 3),而当前版本(如Svelte 5)有重大改进。
    • "I wonder why the article used old versions of React and Svelte? It is using React 17 and Svelte 3." (评论2)
    • "It's worth pointing out this article is discussing Svelte 3.x when the current version is Svelte 5.x" (评论3)

2. 对性能测试的质疑

  • 部分评论认为性能测试意义不大,实际应用中框架差异不显著,更应关注用户体验优化。
    • "I'm so sick of these performance benchmarks... all these frameworks are fast enough for 99.9% of use cases." (评论5)
    • "software isn’t about 'my framework can render 1000 elements 500ms faster'" (评论13)

3. 对Svelte的评价

  • 支持观点:赞赏其简洁性和开发体验。
    • "Svelte is definitely still my favorite way to build web apps in 2025." (评论15)
    • "Wow, everything is namespaced to the component, even CSS!" (评论9)
  • 反对观点:批评其代码可读性和适用性,认为不适合企业级开发。
    • "Svelte is my least favorite... an unreadable mess... no place in a professional setting." (评论24)
    • "Svelte used to be simple, now it's Vue that feels simple" (评论25)

4. 对Web开发的整体反思

  • 评论者表达对前端技术快速迭代但缺乏实质创新的失望。
    • "I am deeply, deeply disappointed in the field... extremely low rate of actual innovation." (评论22)
    • "the modern JS space... So fast moving and most of it is still doing JQuery like reactivity." (评论11)

5. 其他技术讨论

  • Angular:有评论指出其性能测试未考虑最新改进(如zoneless模式)。
    • "Angular performance benchmarks before zoneless (v19+) are obsolete." (评论23)
  • WebAssembly:认为其性能问题可通过优化解决。
    • "You can make wasm web frameworks fast (see leptos and dioxus)." (评论10)
  • 框架生态:对Svelte的成熟度和采用率提出疑问。
    • "Did Svelte gain the adoption like React and Vue?" (评论8)

关键引用保留:

  1. 性能测试争议:

    • "I'm so sick of these performance benchmarks... all these frameworks are fast enough for 99.9% of use cases." (评论5)
    • "software isn’t about 'my framework can render 1000 elements 500ms faster'" (评论13)
  2. Svelte评价两极:

    • "Svelte is definitely still my favorite way to build web apps in 2025." (评论15)
    • "Svelte is my least favorite... an unreadable mess... no place in a professional setting." (评论24)