写点什么

Rich Harris:使用 Svelte 5.0 你将编写更少的代码

  • 2024-08-01
    北京
  • 本文字数:3209 字

    阅读完需:约 11 分钟

大小:1.48M时长:08:38
Rich Harris:使用 Svelte 5.0 你将编写更少的代码

导读:在现代应用程序的开发征途中,开发者们持续遭遇着日新月异的万幸技术挑战与抉择。近期,Svelte 框架迎来了其里程碑式的 5.0 版本,该版本承诺在功能与性能上实现质的飞跃,为用户带来前所未有的体验。Svelte 的缔造者 Rich Harris 在一次访谈中,详尽阐述了这一新版本所蕴含的优势与革新,包括显著提升的灵活性、令人瞩目的速度提升,以及更为精炼的代码编写艺术。然而,面对 React Server Components(RSC)这股新兴技术潮流的兴起,Harris 也坦诚地指出了伴随而来的挑战,特别是组件分离策略的调整与数据获取复杂性的增加。

 

本文中,我们将与读者一同深入剖析 Harris 对于 Svelte 5.0 的独到见解,探讨他是如何巧妙应对框架设计中的种种难题,并展望 React Server Components 对前端开发流程可能带来的深远影响。通过细致入微的技术剖析与实战应用的探讨,我们将揭示这场技术革新背后的核心议题与应对策略。无论你是 Svelte 的忠实拥趸,还是对前端开发技术世界充满好奇的探索者,本文都将为你奉上一场思想盛宴,激发你的深刻思考与洞见。

 

Svelte 5 在各个方面都实现了 “质的飞跃”,其创始人 Rich Harris 在最近的一次播客访谈中信心满满地表示。

 

“它变得更为强大、可靠,体积缩减,速度提升,灵活性增强,且组合性更加出色,”Harris 强调道。“采用 Svelte 5,你将发现相比 Svelte 4,所需编写的代码量大幅减少,同时开发体验也将更加愉悦。”

 

在参与 The Modern Web 播客关于 React 服务器组件与 Svelte 5 的讨论中,Harris 透露了 Svelte 5 引入的细粒度通用响应性特性,这一创新让开发者不再受限于 Svelte 组件本身。同场参与讨论的还有播客主持人 Tracy LeeBen LeshAdam Rackis

 

“你能够在 .cell.json.cell.ts 模块中直接声明响应状态,这简直令人兴奋,”Harris 分享道。“而 Svelte 3 和 Svelte 4 中备受用户喜爱的所有功能,如丰富的动画原语、流畅的过渡效果、作用域 CSS 以及超高速的服务器端渲染等,都得以保留并进一步优化。”

 

Harris 进一步指出,Svelte 5 提供了一个 “与组件框架无缝对接” 的应用框架,且经过精心打磨,体验更佳。他还特别针对以往对编译器的批评做出了回应。

 

“过去,有人批评 Svelte 的编译器输出杂乱无章,担心如果组件众多,最终生成的包体积可能会超过一些大型框架。但现在,这些问题都已不复存在,因为我们的编译器输出变得更加精简高效,”Harris 解释道。“总而言之,Svelte 5 在各个方面都实现了显著的进步。”

 

目前,Svelte 5 已作为发布候选版本面世,并设有一个专为开发者设计的演示平台

 

Svelte 选择 Signals 的背后故事

 

Svelte 的诞生恰逢 Signals 技术风靡之时,其创始人 Harris 欣然表示,Svelte 最终选择采用 Signals 技术是一个明智之举。

 

“这意味着编译器生成的代码异常清晰易懂,且我们无需编写过多代码,因为 Signals 自带了许多便捷功能,” 他解释道,“我们的 Signals 实现极其高效,不仅内存占用低,性能也出类拔萃。作为编译器,我们能够做出其他框架难以企及的设计选择。”

 

“坦白说,Svelte 在框架界其实算是一个相对保守的选手。”

——Svelte 创始人 Rich Harris

 

Signals,作为处理应用状态变化的响应式基础构件,赋予了开发者轻松管理并响应应用内变动的强大能力。Harris 追溯其历史渊源,指出其概念可上溯至 2008 年的 Knockout 框架。Lesh 补充说,那时它们被称为可观察对象,但 Harris 强调其易用性并不尽如人意。

 

Harris 进一步阐述了 Signals 技术的采用历程,从 Vue 3 的兴起,到 Solid 框架创始人 Ryan Carniato 对 Solid 优势的广泛宣传,无不彰显着 Signals 技术的影响力。

 

谈及 Svelte,Harris 再次强调:“我们 Svelte 确实在框架界中扮演着相对保守的角色。尽管我们享有创新灵活的美誉,但在设计决策上,我们无疑是行动较为迟缓的一派。这并不是因为我们缺乏开发速度,而是因为我们对自己所构建的产品有着极高的标准和要求。因此,我们花费了大量时间才达到今天的成就。”

 

Harris 盛赞 React Server Components 为 “卓越之作”

 

在播客访谈中,Harris 也被问及了 React Server Components,这一在 React 社区内过去两年间持续引发热议的技术。面对这一既具个人关联又充满挑战的话题,Harris 坦诚而深入地分享了他的看法。

 

“我确实对 React Server Components 持有积极评价,绝非负面 —— 实际上,我认为它们相当出色。”Harris 说道,“对我而言,React Server Components 的最大魅力在于,它们标志着我们在过去十年左右探索旅程中的一个合乎逻辑且至关重要的下一步,即将我们所有的技术和理念汇聚一堂。”

 

他进一步阐述道,前端领域曾有一个 “荒谬的概念”,即将 HTML、JavaScript 和 CSS 三者割裂开来处理。然而,随着 React 等技术的兴起,人们逐渐认识到这种分离的做法并不明智。

 

“大家开始意识到,如果 CSS 与特定标记相关联,而 JavaScript 又与同一标记紧密相连,那么它们理应被整合在一起。因此,我们开始致力于将各种元素融合起来。”Harris 解释道。

 

“在这方面,Svelte 至少在一段时间内是这一理念的积极倡导者之一。我们不仅仅将行为与标记相结合,更将样式也嵌入到组件文件中,从而构建出自给自足、和谐统一的开发单元。”Harris 自豪地表示。

 

“而 React Server Components 之所以吸引我,正是因为它们代表了我们在过去十年探索过程中,将一切元素整合起来的自然延伸。”

——Harris

 

然而,他也指出,尽管这一方向正确,但在数据获取方面仍存在一个缺失的环节。“想象一下,当你将数据传递给组件时,组件可能会在初始化时发送网络请求以获取这些数据,并据此更新内部状态。”Harris 说,“虽然这种方法可行,但它也伴随着诸多弊端。”

 

他特别指出,通过网络进行数据获取可能会带来加载延迟、瀑布流效应及页面杂乱无章等问题。“但更深层次的问题在于,当你将数据与组件绑定时,你往往需要在组件外部编写数据获取逻辑。”Harris 继续道,“这可能导致一个尴尬的局面:即使你删除了某个组件,相关的数据获取代码可能仍然在运行,而你却浑然不知。”

 

“这就像是你移除了需要水的植物,但水龙头却依然在滴水。”Harris 形象地比喻道,“更糟糕的是,如果你在组件树的深处添加了一个新组件,你可能需要更新那些远在天边、甚至由不同团队维护的数据加载函数。这无疑增加了协调的复杂性和难度。”

 

但幸运的是,React Server Components 巧妙地解决了这一难题。“在 React Server Components 中,获取组件数据的代码就位于组件本身内部。”Harris 解释道,“因此,当你不再需要某个组件时,只需简单地将其删除即可,无需担心相关的数据获取逻辑仍在运行。这是一个既简洁又高效的解决方案,我认为在这一点上,React Server Components 的表现无可挑剔。”

 

React Server Components 的 “挑战”

 

Rackis 提问道:“使用 React Server Components 时,会面临哪些挑战呢?”

 

Harris 解释道,挑战主要在于开发者实际上构建了两个相对独立的世界 —— 服务器端组件与客户端组件。

 

“当然,这样做有其合理之处,比如服务器是一个无状态的环境,因此不适合使用状态钩子;而客户端组件则不应直接访问数据库,这些都是显而易见的考虑。” 他进一步说明,“服务器组件与客户端组件之间的行为差异有其存在的理由,但现实情况是,这种差异给开发者带来了不少困惑。”

 

Harris 坦言,即便是作为框架的创建者之一,他也曾对此感到困惑。

 

“我非常理解这种感受。我希望能在整个应用程序中保持一致的思维模型。” 他继续说道,“如果可以,我真希望不必再去思考这些不同组件如何协同工作,以及哪些数据可以序列化等复杂规则。这不仅让我感到困扰,也让许多开发者感到头疼。这就是主要的挑战所在 —— 它确实不简单。”

 

原文链接:

 

https://thenewstack.io/youll-write-less-code-with-svelte-5-0-promises-rich-harris/

 

声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

2024-08-01 11:578021

评论

发布
暂无评论
发现更多内容

国内外顶尖RPA工具有哪些?

Techinsight

Wing Pro 11.0.1 (macOS, Linux, Windows) - Python IDE

sysin

Python

阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025

阿里巴巴云原生

阿里云 云原生 消息队列

产品更新丨谷云 AI Agent 智能体版本更新

谷云科技RestCloud

AI 智能体 集成平台 AIAgent

知音助聋研发AR字幕手语眼镜,能将手语合成声音;阿里开源泛音频生成模型 ThinkSound 和 2531.8h 的数据集丨日报

声网

Pixelmator Pro 3.7 发布,新增功能简介

sysin

Pixelmator Pro

开源人工智能:数字主权的基石

电子尖叫食人鱼

人工智能 开源

打造全球双万兆之城,上海电信如何有所作为?

脑极体

AI

博睿数据出席GOPS全球运维大会,深度解析如何让大模型真正“懂”运维!

博睿数据

接入豆包大模型,巨人网络解锁《太空杀》AI游戏玩法新高度

新消费日报

VMware Remote Console 13.0.0 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端

sysin

VMRC

AI驱动,治理升级!数造科技亮相中博会,打造一站式数据开发治理新范式

数造万象

人工智能 数据治理 数据开发 热门推荐 AI 智能体

聊点技术 | 大模型多Agent结合根因分析,能碰撞出什么火花?

博睿数据

企业应当如何进行数字化转型呢?

Techinsight

2025企业数字化转型之道

Techinsight

观测云 × AWS SSO:权限治理可观测实践

观测云

AWS

深入理解Spring AOP:核心原理与代理机制详解

量贩潮汐·WholesaleTide

Java spring

深度解读 | 低代码+AI融合如何重构企业级开发范式?​

电子尖叫食人鱼

百度文心 4.5 系列开源:中国 AI 的 又一座里程?碑

百里丶落云

MCP Server 之旅第 7 站:助力 MCP 打破“黑盒困境”

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

Notion 创始人 Ivan Zhao:传统软件开发是造桥,AI 开发更像酿酒,提供环境让 AI 自行发展

声网

可观测领域的王者Dynatrace的故障定位体验

乘云数字DataBuff

运维 可观测性 故障定位 智能运维 运维监控

DNS解析中的TTL值的设置方法和注意事项

国科云

伊克罗德信息助力傲雷部署飞连平台,全球化管理效能全面升级

伊克罗德信息科技

Nextcloud Android 客户端 - 安全高效的文件同步与管理

qife122

开源 Nextcloud

Web前端入门:JavaScript 事件冒泡与事件捕获

不在线第一只蜗牛

JavaScript 前端

VMware Remote Console 12.0.5 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端

sysin

VMRC

VMware ESXi 9.0 macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版

sysin

esxi

VMware ESXi 9.0 macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi

WPS Office for Mac 2025 夏季更新 12.1.21861 - 写作、表格处理、PPT 制作和 PDF 编辑

sysin

WPS Office

Java并发利器:CountDownLatch深度解析与实战应用

量贩潮汐·WholesaleTide

Java

Rich Harris:使用 Svelte 5.0 你将编写更少的代码_架构/框架_Loraine Lawson_InfoQ精选文章