写点什么

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:577901

评论

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

golang里的一些奇奇怪怪的东西

不登山的小鲁

golang Go 语言

Top Trending Libraries of 2021,PaddleOCR再开源8大前沿顶会论文模型!

百度大脑

开学季 | 飞桨AI Studio课程学习,小白也可以成为一名优秀的算法工程师

百度大脑

在线CSS3压缩美化格式化

入门小站

工具

Redis集群架构剖析(2):槽位

非晓为骁

redis集群 slots 分布式,

#yyds内容盘点# 一文带你搞懂Python中变量与常量,Python开发框架

程序媛可鸥

Python 程序员 面试

CorelDRAW2022下载及新增功能讲解

茶色酒

cdr2022

全球央行积极推进CBDC 俄罗斯制裁或成催化剂?

CECBC

深度关注 | 元宇宙如何改写人类社会生活

CECBC

《软件开发的201个原则》思考:3.开发效率和质量密不可分

非晓为骁

程序员 个人成长 软件工程 软件开发原则 开发质量

软件入门之《编程指南》-学习路径和经验随谈

hongfei

个人成长 编程好习惯 经验总结

又一重量级国赛来啦,保研可加分 | 中国软件杯飞桨遥感赛道正式启动

百度大脑

17个新手常见错误,送给初学Python的你!,憋个大招

程序媛可鸥

Python 程序员 面试

30余种加密编码类型的密文特征分析,差点挂在第四面

程序媛可鸥

Python 程序员 面试

36,Python基础开发与实践

程序媛可鸥

Python 程序员 面试

Java 中的静态字段和静态方法

踏雪痕

Java 3月程序媛福利 3月月更

"三高"Mysql - Mysql的基础结构了解

懒时小窝

MySQL 数据库

Axios 教程:Vue + Axios 安装及实战 - 手把手教你搭建加密币实时价格看板

蒋川

Vue Node axios

重新开始学习测试驱动开发

escray

学习笔记 测试驱动开发

实用机器学习笔记二十九:NLP 中的微调

打工人!

机器学习 学习笔记 nlp 机器学习算法 3月月更

架构实战营模块九-毕业设计-电商秒杀系统

Jude

架构实战营

10个Python set 常用操作函数!,oppoPython面试题

程序媛可鸥

Python 程序员 面试

2022美赛单变量深度学习LSTM 时间序列分析预测,作为Python开发者

程序媛可鸥

Python 程序员 面试

28,2021最新Python面试笔试题目分享

程序媛可鸥

Python 程序员 面试

架构实战营 毕业设计项目

樰巳-堕~Horry

架构实战营 「架构实战营」

4万字【Python高级编程】保姆式教学,330页PDF10万字的知识点总结

程序媛可鸥

Python 程序员 面试

90后,要有多少存款才正常?答案太扎心了,阿里P8大佬整理

程序媛可鸥

Python 程序员 面试

Linux之alias命令

入门小站

Linux

在线JSON转HTML工具

入门小站

工具

人工智能1秒检测一辆车,TA助力广本新车质量排名第一

百度大脑

06 - vulhub - Apache HTTPD 多后缀解析漏洞,2021年Python大厂面试分享

程序媛可鸥

Python 程序员 面试

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