原来我一直低估了它!Svelte 5:React 加强版?

开发 前端
现在大家知道为什么我会说:Svelte 5 更像是 React Pro 了吧。它们之间实在是有太多类似(提升)的地方了!

Hello,大家好,我是 Sunday。

今天有位同学,问了我一个框架 Svelte,提到:“他们公司想要使用 Svelte 来去开发一个新的项目。原因是因为 Svelte 5 更新之后,提供了特别多新的功能,像是 增强版的 React!”

他说完之后,确实让我感到非常的好奇。因为说起前端框架,大家想要的无非就是 Vue、React,撑死再加上一个 Angular。

虽然,我们知道,除了这些框架之外,还有很多的前端框架。但是,却对它们并不在意(毕竟在工作中用不到)。

可是,当我看了 Svelte 5 的更新之后,我发现 是我无知了... 。这些,曾经让我们不甚在意的框架,已经成长到了,足够撼动 Vue 和 React 王者地位的程度了!

以 Svelte 为例,目前它已经拥有了 80K+ 的 Star

图片图片

并且,在最新的 Svelte 5 版本中,带来了很多新的特性。它变得更像 React。不!应该说 React Pro 即 React 加强版,这意味着:从 React 切换到 Svelte,不需要太大的技术成本,又可以体验到【无虚拟DOM】的高性能特性以及更加完整的响应式数据驱动(类似于 Vue) 怪不得,该同学所在的公司,有点跃跃欲试呢!

所以说,今天,咱们就来看看 Svelte 5 这个框架,也来 “尝尝鲜!”

创建 Svelte 项目

我们可以直接通过 Vite 创建一个 Svelte 项目,方式非常简单,只需要执行:npm create vite@latest,然后选择 Svelte 即可!

运行项目,即可看到如下效果

图片图片

目录结构

整个项目的目录结构如下所示,和 Vue | React 都非常相似:

图片图片

PS:如果你查看 App.svelte 的代码无代码提示的话,可以安装 Svelte for VS Code 插件

图片图片

尝试下 Svelte 5 的语法

在 Svelte 中,他的组件结构和 Vue 的单文件组件 非常类似,同样划分为 script、"dom 区"(template)、style 三部分

图片图片

那么下面我们就在这里尝试下 Svelte 5,顺道看看为什么说他是 “React Pro”!

声明响应式数据

在 React 中,如果想要声明一个响应式数据,我们一般这么写

export function Component () {
  const [count, setCount] = useState(0)
  const [name, setName] = useState('程序员Sunday')
}

而在 Svelte 中,声明响应式数据,则这么写:

<script>
 // 声明响应式状态
 const count = $state(0)
 const name = $state('程序员Sunday')
</script>

<div>
 数字:{count}
</div>
<div>
 名字:{name}
</div>

在上面的代码中,我们借助 $state() 声明响应式数据,对比 React 的 useState ,有没有点那个味?

然后,我们来看看 监听数据变化的方式

监听数据变化

在 React 中,如果我们想要监听数据的变化,那么需要借助 useEffect,代码一般长这样:

export function Component () {
  const [name, setName] = useState('程序员Sunday')
  
  useEffect(() => {
    console.log('name 变化了')
  }, [name])

  const handleChangeName = () => {
    setName('LGD_Sunday');
  };
}

而在 Svelte 中,监听响应式数据则这么写:

<script>
 // 声明响应式状态
 let name = $state('程序员Sunday')

 $effect(() => {
  console.log('name 变化了')
 })

 const handleChangeName = () => {
  name = 'LGD_Sunday'
 }
</script>

<div>
 名字:{name}
</div>
<button onclick={handleChangeName}>修改name</button>

在上面的代码中,我们可以发现:Svelte 依然通过 effect 监听响应式数据的变化,同时 我们可以直接修改对应的数据,而无需通过 setState 这样的操作(也无需像 Vue 一样,必须 .value),Svelte 可以智能地找出需要变更的依赖项!

现在大家知道为什么我会说:Svelte 5 更像是 React Pro 了吧。它们之间实在是有太多类似(提升)的地方了!

如果想要对 Svelte 5 有更深度的学习,那么可以看下对应的官方文档。今天,咱们就不过多的探讨 Svelte 5 的语法啦!

责任编辑:武晓燕 来源: 程序员Sunday
相关推荐

2010-12-28 11:30:09

Fport

2021-12-15 10:20:08

缓存架构开发

2021-11-29 18:34:14

内存异步死循环

2020-07-20 09:04:05

Java语言Vue

2020-12-30 09:20:26

Redis数据库开源

2018-02-05 16:35:45

程序员JAVA面试

2022-04-14 19:39:39

Java线程安全

2018-03-02 12:41:28

2022-09-26 08:30:41

黑客网络攻击隐私

2011-01-17 23:25:58

CA Technolo自动化思科

2017-01-22 15:43:47

数据架构演进

2023-04-03 07:23:06

Java线程通信

2011-06-10 17:06:38

2011-06-29 15:36:07

2020-06-22 13:48:08

SQL查询SELECT

2024-07-01 00:00:03

2024-11-13 08:36:28

2021-04-27 07:52:19

StarterSpring Boot配置

2022-06-28 14:01:42

MITOpenAI预训练模型

2019-12-06 11:22:00

中国电信
点赞
收藏

51CTO技术栈公众号