slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
Rich Harris :Svelte 5.0 可减少代码编写量
17611538698
webmaster@21cto.com

Rich Harris :Svelte 5.0 可减少代码编写量

前端 0 1796 2024-07-20 07:38:38

各位看官们,Svelte5 框架已经正式发布了。

官方除了提供有关即将推出的 Svelte 5 的详细信息之外,该框架的作者 Rich Harris 还分享了自己对 React Server Components 的看法,请来详细看本文~

图片

创建者Rich Harris在最近的播客中向开发者们承诺,Svelte 5.0 将在各个方面“变得更加好用” 。

“它更强大、更可靠、更小、更快、更灵活、更易于组合,”Harris 这样承诺道。“它更加简单。使用Svelte 5编写的代码比用Svelte 4少很多,而且感觉更加良好。”

他表示,Svelte 5 增加了细颗粒度的通用反应性,这意味着开发者将不再局限于 Svelte 组件。与他一起参加播客讨论的还有播客Tracy Lee、Ben Lesh和Adam Rackis。

“你可以在 .cell.json.cell.ts 模块内声明反应状态,这可太酷了。人们喜欢的 Svelte 3 和 4 的所有内容都仍然存在,例如所有动态原语、过渡、作用域 CSS、超快的服务器端渲染等。”

Harris 继续说,你会发现一个“与组件框架完美契合”的应用程序框架,它的打包版本会更好。

当然,他也特别回应了开发者们对Svelte 编译器的批评。

“对于那些过去看过 Svelte 编译器输出的人来说,他们会说,‘这看起来真的很混乱与不稳定,而且如果我有很多这样的组件,它最终会成为一个可能我刚一开始就使用的框架的包更大,但这种情况不再是真的了,因为编译器输出要精简得多,’他说。“从每个方面来看,它都在变得更好。”

有意思的是,Svelte 5 除了发布正式版本,还有一个可供开发人员预览该框架的“游乐场”。

图片

播客中的人物。从左上到右分别为:Tracy Lee 和 Rich Harris。从左下到右:Ben Lesh 和 Adam Rackis。

为什么 Svelte 采用 Signals


Svelte 是在 Signals 炒作最热的时期创建的,Harris表示他很高兴 Svelte 选择使用 Signals(信号)。


“这意味着编译器生成的代码非常易于阅读,我们根本不需要生成大量代码,因为 Signals 为您提供了很多免费功能,”他不无“谦虚”地说道:“而且我们对 Signals 的实现非常高效,内存效率很高,性能也相当高。因为作为编译器,我们能够做出其他框架难以做出的设计选择。”

“说实话,我们实际上是比较保守的框架之一。”


——Svelte 创始人 Rich Harris

Signals 是处理应用程序状态的反应原语。它们允许开发人员轻松管理和响应应用程序中的变化。


这个名词实际上可以追溯到 2008 年左右,当时 Knockout 还很流行。当时它们被称为可观察对象,但是Harris 明确指出,它们的人体工程学做得并不咋好。


他解释了 Signals 的采用曲线,将其追溯到 Vue 3,然后他感谢Solid 的创建者 Ryan Carniato宣传了 Solid 的优势。

“说实话,我们实际上是比较保守的框架之一,” Harris谈到 Svelte 时说。“我们以创新而闻名,但在设计方面,我们绝对是行动较慢的框架之一,这并不是因为我们没有开发速度,而是因为我们对构建的内容非常挑剔。所以我们花了很长时间才到达那里。”

Harris 称 React 服务器组件做得“非常出色”


人们向 Harris 询问了React Server Components (RSC)的问题。其实在过去两年多来,React 圈子里一直在热议这个问题。Harris 承认道,这对他来说是一个棘手的谈话,因为他为 Vercel 工作,而 Vercel 已经采用了 React Server Components。


“我确实对 RSC 有看法,但不是坏的看法——实际上我认为它们非常了不起。对我来说,React Server Components 最大的吸引力在于,这是我们在过去十年左右的旅程中合乎逻辑的下一步,将我们所有的东西都放在一块。”


他说基本上前端开发者都有这样的想法,他称之为“荒谬的想法”——就是想将 HTML、JavaScript 和 CSS 分开。他补充说,很大程度上由于 React 的思维,人们现在认为这是一个非常糟糕的想法。


“人们开始认识到这确实是一个非常非常糟糕的想法,实际上,如果你有一些与应用程序中特定标记相关的 CSS,并且你有一些与相同标记相关的 JavaScript,那么它们应都属于一起的,所以我们开始将东西放在一起。至少在一段时间内,Svelte 是这一理念的更积极的追随者之一,因为我们不仅在标记旁边有行为,而且我们实际上在组件文件中就有CSS样式,所以一切都是这个很好的独立小东东。”

“对我来说,React Server Components 最大的吸引力在于,这是我们在过去十年左右的旅程中合乎逻辑的下一步,将我们所有的东西放在一块。”


– Rich Harris

不过,他表示还缺少一个部分,那就是数据获取。他说:

“假设你将数据传递到组件中,也许当组件在浏览器中初始化时,它会发送网络请求并获取一些数据,然后它会更新一些内部状态,”

他说,尽管这种方法有效,但也存在诸多缺点。

“其中一个缺点是,如果可以的话,你真的不想通过网络来做这些事情。比如你会有加载旋转图标,你可能会有各种各样的瀑布和类似的东西。但真正的问题是,如果你要将数据传递到组件中,你需要在组件本身以外的地方有代码来做数据获取。”

而问题是,如果你删除一个组件,你的程序可能仍然在获取数据,而你可能没有意识到这一点。

“你不知道你删除的是需要数据的代码,而不是数据本身。相反地,如果你在树的某个深处添加了一个组件,那么你可能需要更新数据加载函数,而这个函数距离你很远,甚至可能由另一个团队负责。你大概会遇到一个非常棘手的协调问题。”

而 RSC 强有力地解决了这个问题。

“获取属于组件的数据的代码存在于组件本身中。如果你不再需要该组件,你可以删除它,并且你不再需要为该组件获取数据。所以这是一个非常好、优雅的事情,我认为从未见过有人能像 RSC 那样解决这个问题。”

RSC 的《Catch》

目前的问题在于,开发者实际上创建了两个独立的世界,包括服务器上的组件和客户端上的组件。

Harris 说道:

“这显然是有充分理由的,比如服务器是无状态环境,因此没有必要设置有状态的钩子;而对于客户端组件,它们应该能够直接访问数据库,这是没有意义的。诸如此类。服务器组件和客户端组件之间的行为差异显然是有原因的,但我们发现,这种差异确实让人感到一些困惑。”

Harris 也大方承认,作为框架创建者,这些东西也会让他自己感到困惑。

“我对此深表同情。我希望我的整个应用程序都具有相同的思维模式。在可能的范围内,我不想再去思考,规则是什么,如何组合这些不同的组件,哪些数据可以序列化,这些事情只会让我感到困惑。这让很多人都感到困惑。这是主要的症结所在,但改起来确实有困难,需要一些时间。”


作者:场长

评论