文章摘要
网上许多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树与组件树同步:
- 虚拟DOM(vDOM)渲染:React、Vue和Blazor使用此方法,通过比较树结构计算最小变更集,时间复杂度通常为O(n)。
- 数据绑定:Angular和Svelte采用此方法,组件直接通过跟踪数据绑定值更新对应的DOM部分。
性能测试显示,Svelte在所有基准测试中表现最佳。以下是关键发现:
创建静态元素时,Svelte最快,React最慢:
- 创建50,000个元素:Svelte仅需98ms,React需3559ms
创建二叉树组件时,Svelte仍最快,Blazor最慢:
- 创建32,768个组件:Svelte需482ms,Blazor需3644ms
更新组件时,采用数据绑定的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)
关键引用保留:
性能测试争议:
- "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)
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)