前端开发框架 Svelte 5 发布,历史上最重要的版本


经过近 18 个月的开发,数十名贡献者提交了数千次代码,Svelte 5 终于稳定下来。这是该项目历史上最重要的版本。Svelte 5 是一次彻底的重写:开发的应用将变得更快、更小、更可靠。同时将能够编写更一致、更符合语言习惯的代码。对于框架的新手来说,需要学习的东西更少。

值得关注的是,Svelte 几乎完全向后兼容 Svelte 4,也就是说初始升级将完全无缝:

Svelt官方介绍,随着越来越多的人使用 Svelte 构建更多、更大的应用程序,最初的一些设计决策的局限性开始变得更加明显。例如,在 Svelte 4 中,响应性完全由编译器驱动。如果在 Svelte 4 中更改响应对象的单个属性,则整个对象将失效,因为这是编译器实际能做的全部。与此同时,其它框架采用了基于信号的细粒度响应性,超越了 Svelte 的性能。

同样,Svelte 4 中的组件组合也比较尴尬,主要是因为它将事件处理程序和“插槽内容”(slotted content)视为独立的概念,与传递给组件的 props 不同。这是因为在 2019 年,Web 组件似乎很有可能成为组件的主要分发机制,而 Svelte 希望与平台保持一致。现在看,这其实是一个错误选择。

虽然 $: 构造响应式重新运行语句是一个巧妙的技巧,但结果却是徒劳无功。它混淆了两个本应分开的概念(派生状态和副作用),而且由于依赖关系是在语句编译时而不是运行时确定的,因此它无法重构,搞得越来越复杂。

Svelte 5 消除了这些不一致和麻烦。它引入了runes,这是一种显式机制,用于声明响应式状态(当然它还有其它作用):

与状态的交互没有改变:与其它框架不同,count 只是一个数字,而不是一个函数,或者具有值属性的对象,或者只能通过相应的 setCount 来更改的东西。

function increment() {
	count += 1;
	console.log({ count });
}

runes 可以在 .svelte.js 和 .svelte.ts 模块中使用,除了 .svelte 组件,这意味着可以使用单一机制创建可重用的响应式逻辑。

事件处理程序现在就像其它属性一样,比如可以很容易知道组件用户是否提供了特定的事件处理程序(这对于避免昂贵的设置工作非常有用),或者将任意事件处理程序传播到某个元素上,这些对库作者尤其重要。

用于在组件之间传递内容的插槽机制,以及令人困惑的 let: 和 <svelte:fragment> 语法,已被 {#snippet …} 替代,这是一个更强大的工具。

除了这些变化,还有无数改进:原生 TypeScript 支持(不再需要预处理器!)、许多错误修复,以及整体性能和可扩展性的提升。

此外,随着 Svelte 的新版本发布,也推出了新的命令行界面 (CLI),sv。而利用新的 Svelte 5 特性的 SvelteKit,也在计划中了。详情查看官方公告:https://svelte.dev/blog/svelte-5-is-alive

阅读更多:

  • Svelte 造了个 “新轮子”—— runes
  • Svelte 正在从 TypeScript 切换到 JavaScript


相關推薦

2023-09-23

据技术都能四世同堂,凭什么开发 30 岁就要被干掉? 前端 UI 框架 Svelte 宣布下一个大版本 Svelte 5 将引入名为「runes」的新 API。 从公告来看,runes 是 Svelte 开发团队对“响应式” (reactivity) 进行反思的一次探索。 Svelte 5 ch

2022-06-03

软件开发与设计公司 The Software House 就 2022 年的前端市场状态进行了一次调查,该调查基于全球 125 个国家/地区超 3700 名前端开发专业人士所提供的数据;并邀请了 19 位前端专家分享他们的想法以及对调查结果的见解。 数据显

2023-05-11

,Svelte 团队将会从目前使用的 TypeScript 迁移到 JSDoc。 前端 UI 框架 Svelte 创始人 Rich Harris 在推特的回复印证了这一消息。他表示这个决定没有改变 Svelte 的类型安全。 负责 Svelte 编译器的开发者则说道,改用 JSDoc 后,代码不

2022-10-11

的 TypeScript LanguageService 实例,对于像 Astro 同时支持多个前端框架的项目可能很有用。 VueLanguagePlugin API 现在支持 vueCompilerOptions.plugins 选项指定额外 plugin 来更改 virtual code 的生成方式。 VueLanguagePlugin 的 codegen API 使用&nb

2023-01-20

bsp;2022 年 JavaScript 现状调查报告指出,Solid 和 Qwik 等新兴前端框架正在挑战 React 的权威。该报告基于对近 40,000 名 Web 开发人员的调查,数量几乎是去年的两倍。 JavaScript 可能发展得很快,但 JavaScript 开发人员的发展速

2023-09-09

表示这是开历史倒车。大家怎么看? 对了,不久前知名前端 UI 框架 Svelte 也宣布从 TypeScript 切换到 JavaScript。

2022-12-08

一股“神秘力量”使得知名前端框架 Vue 的周 npm 下载量激增十倍,以至于 Vue 创始人尤雨溪发推解释:“我也不知道谁搞出来的,请搞出这事的人赶紧修复吧,这样会搞得统计数据毫无意义。” 从 NPM Trends 页面上可以看到,

2023-09-19

Nue JS 是最近开源的 Web 前端项目,用于构建用户界面,体积非常小(压缩后 2.3kb)。Nue JS 支持服务器端渲染 (SSR)、反应式组件和“同构”组合 ("isomorphic" combinations)。 作者表示,它就像 Vue.js、React.js 或 Svelte,但没有 hooks, effects

2023-03-18

像 PHP 7 之于 PHP:大规模清理、重构和现代化,为未来的开发奠定了基础。 注意:PHPUnit 10 需要 PHP 8.1 或更高版本。另请注意,PHPDBG 和 Xdebug 2 不再是受支持的代码覆盖信息来源,需要使用 PCOV 或 Xdebug 3 来收集、处理和报告代码

2022-09-12

结束 文档还没有完全就绪 SvelteKit 是一个使用 Svelte 前端技术开发 Web 应用的框架,满足不同规模的应用开发,提供一个非常灵活和良好体验的基于文件系统的路由架构。

2024-08-13

or.dev AI 驱动的开源富文本编辑器 开箱即用、支持所有前端框架、支持 Markdown 书写模式 什么是 AIEditor AiEditor 是一个面向 AI 的下一代富文本编辑器,她基于 Web Component,因此支持 Layui、Vue、React、Angular 等几乎任何前端框架

2023-01-08

引用的文件;这可能会导致各种性能问题和误导性文档。开发团队希望对 WebStorm 如何处理 HTML、CSS 和 JavaScript 中的文件引用实现一种更通用的方式,以尝试解决这些问题。 常规改进 新 UI 的进一步工作。 目前正在处理有关

2023-10-09

在从 TypeScript 切换到 JavaScript 至于大牛与否,不妨看看前端大佬 winter 的“内涵”评价: 言归正传,我们回到题目本身。最近开源PHP采访了 3 位资深前端工程师: 刘勇,社区昵称天猪,某大厂 Node.js Infra 

2022-07-23

执己见的 Web 框架 Vue.js & Vite - 渐进式 JS 框架和现代前端工具栈 Astro - 用于构建快速、以内容为中心的网站的一体化 Web 框架。 Svelte - 将声明式组件转换为高效 JavaScript 的编译器 Preact - DOM 之上的“最薄的”虚拟 DOM 抽象