kaiyun全站网页版登录 前端新一代框架 Svelte 火了!十个场景带你简单认识它!

发布于:25-07-28 播放次数:

最近广泛流传的框架多为 Vue、React 和 Angular,然而,在国外却有一个框架颇受欢迎,操作简便,那就是 Svelte。它连续多年在 Stack Overflow 的开发者调查中被选为最受欢迎的前端 UI 框架,但在我国,它的知名度似乎并不高。

秉持着掌握多项技能不会过时的观念,我认为大家应当对Svelte有所了解,掌握其使用方法。下面,我将通过几个简短的示例,向大家展示Svelte的具体应用。

Vite & Svelte

目前Vite搭建的脚手架已经内置了Svelte,因此我们能够借助Vite来快速启动一个基于Svelte的开发项目。通过执行特定命令,我们便可以开始:

npm create vite@latest

接着我们设置完项目名后,选择Svelte

Svelte框架学习指南_createevent windows_Svelte与Vite结合使用

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

npm i
npm run dev

Svelte与Vite结合使用_Svelte框架学习指南_createevent windows

变量 & 事件

在设定变量时,无需模仿Vue的ref机制,亦无需效仿React的useState模式,只需直接赋予变量名称,如此便创建了一个具有响应性的变量。

在处理此类事件时,必须采用Svelte的特定语法结构on:云开·全站体育app登录,例如,在点击事件中应用on:click={xxxxx}这样的格式。

下面的例子就可以实现按钮点击,实现数字的自增~



Svelte框架学习指南_createevent windows_Svelte与Vite结合使用

父传子 & 子传父父传子

首先,我们得谈谈父组件向子组件的传递,Svelte框架中引入了export关键字开yun体育app官网网页登录入口,允许子组件通过此关键字接收数据,同时,这一过程可以与TypeScript相结合,从而对属性的类型进行明确界定。

// Children.svelte

我叫{name},今年{age}岁

在父组件内部,Svelte语言通过使用花括号{}这一便捷语法,实现了向子组件传递数据的功能。需要注意的是,传递的数据类型必须与子组件中预定义的类型相匹配,否则系统将会抛出类型错误提示。

// 父组件

子传父

实际上,众多框架的设计颇为相似,其中数据流动通常呈单向模式,父级向子级传递数据是常见现象。然而,若子级需要向父级传递信息,则推荐通过事件机制来实现这一过程。

// Children.svelte


// 父组件

双向绑定

Svelte跟Vue一样,都提供了双向绑定的语法糖:







插槽

Svelte与Vue具有相似之处,它们都配备了插槽功能,即slot。这一功能不仅包括默认插槽,还涵盖了具名插槽。

// Children.svelte
default 插槽
------------
footer 插槽

// 父组件

  
哈哈哈哈哈哈
嘻嘻嘻嘻嘻嘻

Svelte框架学习指南_createevent windows_Svelte与Vite结合使用

生命周期

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}

Svelte框架学习指南_Svelte与Vite结合使用_createevent windows

条件渲染 & 循环渲染

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}

结语

我是林三心,曾任职于一家小型政府类外包企业,随后又投身于一家规模庞大的外包公司,之后又辗转于若干小公司,并在一家具有发展潜力的创业公司中担任前端开发工作,最后还曾在一家大公司中磨砺技艺。