最近广泛流传的框架多为 Vue、React 和 Angular,然而,在国外却有一个框架颇受欢迎,操作简便,那就是 Svelte。它连续多年在 Stack Overflow 的开发者调查中被选为最受欢迎的前端 UI 框架,但在我国,它的知名度似乎并不高。
秉持着掌握多项技能不会过时的观念,我认为大家应当对Svelte有所了解,掌握其使用方法。下面,我将通过几个简短的示例,向大家展示Svelte的具体应用。
Vite & Svelte
目前Vite搭建的脚手架已经内置了Svelte,因此我们能够借助Vite来快速启动一个基于Svelte的开发项目。通过执行特定命令,我们便可以开始:
npm create vite@latest
接着我们设置完项目名后,选择Svelte

然后进入项目执行依赖安装kaiyun全站网页版登录,安装完后运行项目
npm i
npm run dev

变量 & 事件
在设定变量时,无需模仿Vue的ref机制,亦无需效仿React的useState模式,只需直接赋予变量名称,如此便创建了一个具有响应性的变量。
在处理此类事件时,必须采用Svelte的特定语法结构on:云开·全站体育app登录,例如,在点击事件中应用on:click={xxxxx}这样的格式。
下面的例子就可以实现按钮点击,实现数字的自增~

父传子 & 子传父父传子
首先,我们得谈谈父组件向子组件的传递,Svelte框架中引入了export关键字开yun体育app官网网页登录入口,允许子组件通过此关键字接收数据,同时,这一过程可以与TypeScript相结合,从而对属性的类型进行明确界定。
// Children.svelte
我叫{name},今年{age}岁
在父组件内部,Svelte语言通过使用花括号{}这一便捷语法,实现了向子组件传递数据的功能。需要注意的是,传递的数据类型必须与子组件中预定义的类型相匹配,否则系统将会抛出类型错误提示。
// 父组件
子传父
实际上,众多框架的设计颇为相似,其中数据流动通常呈单向模式,父级向子级传递数据是常见现象。然而,若子级需要向父级传递信息,则推荐通过事件机制来实现这一过程。
// Children.svelte
// 父组件
双向绑定
Svelte跟Vue一样,都提供了双向绑定的语法糖:
插槽
Svelte与Vue具有相似之处,它们都配备了插槽功能,即slot。这一功能不仅包括默认插槽,还涵盖了具名插槽。
// Children.svelte
default 插槽
------------
footer 插槽
// 父组件
哈哈哈哈哈哈
嘻嘻嘻嘻嘻嘻

生命周期
Svelte跟Vue一样,都提供了生命周期的 API
获取 DOM 节点
Svelte若要获取DOM元素,应当采用bind:this的方法。
哈哈
异步更新获取最新 DOM
在Vue框架中,每当变量发生变动,页面的DOM元素并不会立即同步更新,而是采取了一种异步的更新机制。因此,为了获取到最新的DOM状态,我们必须借助名为nextTick的API。
在Svelte框架中,同样存在一个名为tick的机制,这实际上是一个承诺(Promise)函数。该函数会在视图进行更新之前被调用,因此,在它执行完毕之后,我们便能够获取到最新的DOM数据。
{msg}
watch & computed
Svelte引入了$符号,这一符号与Vue中的watch和computed功能相似,用于在变量变动时自动调用相应的函数。
{msg1}
{msg2}

条件渲染 & 循环渲染
Vue通过v-if指令实现了条件渲染功能,而Svelte则依赖于模板语法来执行条件渲染的相关操作。
{#if age > 50}
老年人
{:else if count > 30}
中年人
{:else}
小朋友
{/if}
循环渲染也同样需要使用模板语法
对每一项物品(以物品的ID进行标识)进行遍历处理。
{item.name}
{/each}
全局状态管理
在Vue中,我们使用的全局状态管理工具有:
在Svelte框架中,我们能够直接通过svelte/store模块来执行状态管理任务,并且为了获取该模块中的变量,必须使用美元符号$。
引入了来自`svelte/store`模块的`writable`功能。
导出const变量count,并将其设置为可写的初始值为0。
// Componnet.svelte
{$count}
结语
我是林三心,曾任职于一家小型政府类外包企业,随后又投身于一家规模庞大的外包公司,之后又辗转于若干小公司,并在一家具有发展潜力的创业公司中担任前端开发工作,最后还曾在一家大公司中磨砺技艺。

