【前端】Svelte:核心语法和组件基础

本教程将详细介绍 Svelte 的核心语法和组件基础,包括 <script><style> 和 HTML 模板的使用方法。我们将通过实例掌握双向数据绑定、条件渲染、循环等基本语法,最后编写简单的交互式组件。

Svelte 组件机制

Svelte 使用组件化结构来组织代码。每个 .svelte 文件就是一个组件,包含 <script><style> 和 HTML 模板块,分别用于编写 JavaScript 逻辑、CSS 样式和 HTML 结构。组件之间的逻辑与样式是分离的,但每个组件的 CSS 默认作用于组件自身。

组件文件结构

每个 .svelte 文件由以下三个主要部分组成:

  • <script>:编写 JavaScript 逻辑,包括定义变量、函数、导入模块等。
  • <style>:编写组件的 CSS 样式。Svelte 会将样式作用域限定在当前组件,不会影响全局样式。
  • HTML 模板:用于描述组件的 HTML 结构。可以在模板中插入变量、条件渲染、循环等。
<!-- App.svelte -->
<script>let name = 'Svelte';
</script><style>h1 {color: #ff3e00;}
</style><main><h1>Hello {name}!</h1>
</main>

在这个示例中,组件会显示一个 “Hello Svelte!” 标题,并将标题颜色设置为橙色。

基础语法和数据绑定

单向数据绑定

Svelte 提供了简单的绑定机制,只需在 HTML 中插入 {} 即可将变量绑定到视图。通过单向绑定,视图会随变量的更新而自动刷新。

<script>let count = 0;
</script><button on:click={() => count += 1}>Clicked {count} times
</button>

每次点击按钮,count 会增加 1,视图会自动更新显示点击次数。

双向数据绑定

Svelte 提供了 bind: 语法用于实现双向数据绑定。可以将输入框的内容和变量绑定,使输入的内容实时更新到变量中。

<script>let name = '';
</script><input bind:value={name} placeholder="Enter your name" />
<p>Your name is {name}</p>

在这个示例中,每当输入框内容变化时,name 变量会自动更新,且会实时显示在段落中。

条件渲染和循环渲染

条件渲染({#if ...}

Svelte 支持使用 {#if} 块进行条件渲染。可以根据条件动态显示或隐藏某些内容。

<script>let isLoggedIn = false;function toggleLogin() {isLoggedIn = !isLoggedIn;}
</script><button on:click={toggleLogin}>{#if isLoggedIn}Logout{:else}Login{/if}
</button>
<p>{isLoggedIn ? "Welcome back!" : "Please log in."}</p>

这里通过点击按钮改变 isLoggedIn 的状态,以动态显示 “Login” 或 “Logout” 文案。

循环渲染({#each ...}

Svelte 的 {#each} 块可以遍历数组并渲染每一项。适用于动态展示列表。

<script>let items = ['Apple', 'Banana', 'Orange'];
</script><ul>{#each items as item}<li>{item}</li>{/each}
</ul>

上面的代码会生成一个列表,每个水果名都将显示在一个 li 元素中。

事件绑定和交互式组件

事件绑定

Svelte 提供了简洁的事件绑定语法,通过 on: 指令可以轻松绑定事件。

<script>let message = '';function handleClick() {message = 'Button clicked!';}
</script><button on:click={handleClick}>Click me</button>
<p>{message}</p>

在这个示例中,点击按钮后,message 的内容会更新为 “Button clicked!”。

双向绑定的输入组件

使用 bind: 实现输入框的双向绑定,可以创建一个交互式输入组件。

<script>let username = '';
</script><input bind:value={username} placeholder="Enter your username" />
<p>Hello, {username || 'Guest'}!</p>

当用户在输入框中键入时,username 变量实时更新,页面上的文本也会动态改变。

简单的交互式组件示例

我们可以利用以上语法,编写一个包含按钮和输入框的交互式组件,让用户可以输入信息并点击按钮来更新显示内容。

<script>let name = '';let greeting = '';function greet() {greeting = `Hello, ${name}!`;}
</script><style>button {margin-top: 10px;padding: 5px 10px;background-color: #6200ea;color: #fff;border: none;border-radius: 3px;cursor: pointer;}
</style><input bind:value={name} placeholder="Enter your name" />
<button on:click={greet}>Greet</button>
<p>{greeting}</p>

在这个示例中:

  1. 输入框通过 bind:value 实现双向数据绑定。
  2. 点击按钮后触发 greet 函数,更新 greeting 文本并显示。

通过该交互组件,用户可以输入名称并点击按钮,页面会显示相应的问候信息。

总结

在本教程中,我们学习了 Svelte 的组件机制、单向和双向数据绑定、条件渲染和循环渲染,还编写了简单的交互式组件。通过这些基础语法和功能,已经可以构建动态的交互界面。掌握这些内容之后,您可以进一步学习 Svelte 的 Store 状态管理、路由等高级特性,创建更复杂的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/468430.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPS 默认模板修改

重装系统把word自定义样式搞没了&#xff0c;安装office时间太长&#xff0c;转战wps 解决方案 打开wps 点击【新建】word空白文档 设置修改你自己的样式 点击文件–另存为–Microsoft Word 带宏的模板文件&#xff08;*.dotm&#xff09; 另存路径为如下&#xff1a; 查…

Ubuntu24.04网络异常与应对方案记录

PS: 参加过408改卷的ZJU ghsongzju.edu.cn 开启嘲讽: 你们知道408有多简单吗&#xff0c;操作系统真实水平自己知道就行&#xff5e;&#xff5e; Requested credits of master in UWSC30&#xff0c;in ZJU24&#xff0c;domestic master is too simple ubuntu安全软件 在 U…

[C++11] Lambda 表达式

lambda 表达式&#xff08;Lambda Expressions&#xff09;作为一种匿名函数&#xff0c;为开发者提供了简洁、灵活的函数定义方式。相比传统的函数指针和仿函数&#xff0c;lambda 表达式在简化代码结构、提升代码可读性和编程效率方面表现出色。 Lambda 表达式的基本语法 在…

Docker平台搭建方法

Docker平台搭建方法 1.1在VMware中创建两个虚拟机&#xff0c;只需要1个网卡&#xff0c;连接192.168.200.0网络。 虚拟机分配2个CPU,2G内存&#xff0c;60G硬盘&#xff0c;主机名分别为server和client,IP地址分别为192.168.200.137和192.168.200.138。server节点还兼做regis…

【学习笔记】Kylin-Desktop-V10-SP1 麒麟系统知识4——设备设置

提示&#xff1a;学习麒麟Kylin-Desktop-V10-SP1系统设备设置相关知识&#xff0c;包含设备设置进入方法、配置打印机、设置鼠标、键盘相关参数&#xff08;包含输入法的配置&#xff09;、以及管理快捷键组合、和多屏协同相关配置 一、前期准备 成功安装麒麟系统&#xff08…

Linux应用项目之量产工具(一)——显示系统

目录 前言 项目特点及介绍 ① 简单易用 ② 软件可配置、易扩展 ③ 纯 C 语言编程 软件总框架 显示系统 1.数据结构抽象 disp_manager.h 2.Framebuffer编程 framebuffer.c 3.显示管理 disp_manager.c 4.单元测试 disp_test.c 顶层目录Makefile 顶层目录Makefil…

企微SCRM价格解析及其性价比分析

内容概要 在如今的数字化时代&#xff0c;企业对于客户关系管理的需求日益增长&#xff0c;而企微SCRM&#xff08;Social Customer Relationship Management&#xff09;作为一款新兴的客户管理工具&#xff0c;正好满足了这一需求。本文旨在为大家深入解析企微SCRM的价格体系…

leetcode92:反转链表||

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[1,4,3,2…

Python——数列1/2,2/3,3/4,···,n/(n+1)···的一般项为Xn=n/(n+1),当n—>∞时,判断数列{Xn}是否收敛

没注释的源代码 from sympy import * n symbols(n) s n/(n1) print(数列的极限为&#xff1a;,limit(s,n,oo))

多线程的创建方式以及及Thread类详解

目录 一.线程的创建方法&#xff1a;&#xff08;重点&#xff09; 一&#xff1a;继承Thread类 写法一&#xff1a;正常写法 写法二&#xff1a;匿名内部类 二.实现Runnable接口 写法一&#xff1a;正常写法 写法二&#xff1a;匿名内部类 三. 实现 Callable 接口 ​…

成功解决WSL2上的Ubuntu22.04执行sudo apt-get update指令报错问题

问题&#xff1a;输入sudo apt-get update指令会显示如下报错 问题所在&#xff1a;Temporary failure in name resolution 显然是系统无法解析域名。这可能是 DNS 配置问题。 解决方案&#xff1a; 临时修改 DNS 配置 尝试手动修改 /etc/resolv.conf 文件来使用公共 DNS 服务…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-19

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

ffmpeg 视频滤镜:屏蔽边框杂色- fillborders

滤镜描述 fillborders 官网链接 > FFmpeg Filters Documentation fillborders滤镜有几种方式帮你屏蔽边框的杂色、不好的图案。 滤镜使用 参数 left <int> ..FV.....T. set the left fill border (from 0 to INT_MAX) (default 0)right …

Unity性能优化 -- 性能分析工具

Stats窗口Profiler窗口Memory Profiler其他性能分析工具&#xff08;Physica Debugger 窗口&#xff0c;Import Activity 窗口&#xff0c;Code Coverage 窗口&#xff0c;Profile Analyzer 窗口&#xff0c;IMGUI Debugger 窗口&#xff09; Stats 统级数据窗口 game窗口 可…

【Ant.designpro】上传图片

文章目录 一、前端二、后端 一、前端 fieldProps:可以监听并且获取到组件输入的内容 action{“/api/upload_image”} 直接调用后端接口 <ProFormUploadButtonlabel{"上传手续图片"}name{"imgs"}action{"/api/upload_image"}max{5} fieldPro…

王珊数据库系统概论第六版PDF+第五版课后答案+课件

为了保持科学性、先进性和实用性&#xff0c; 编者在第5版教材基础上对全书内容进行了修改、更新和充实。在科学性方面&#xff0c; 编者在系统篇中增加了第9章关系数据库存储管理&#xff0c; 讲解数据库的逻辑与物理组织方式及索引结构。增加这部分内容有助于学生更好地理解关…

胡闹厨房练习(一)

参考教程 参考教程 学习视频 目录 准备工作 一、创建项目 二、处理预置文件和设置 三、编辑器布局 四、Visual Studio设置 五、导入资源 六、设置源素材 七、视觉效果&#xff08;后期处理&#xff09; 角色控制器 一、角色 二、制作动画 三、动画控制 四、运动脚…

「QT」几何数据类 之 QVector2D 二维向量类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

Spring中的过滤器和拦截器

Spring中的过滤器和拦截器 一、引言 在Spring框架中&#xff0c;过滤器&#xff08;Filter&#xff09;和拦截器&#xff08;Interceptor&#xff09;是实现请求处理的两种重要机制。它们都基于AOP&#xff08;面向切面编程&#xff09;思想&#xff0c;用于在请求的生命周期…

网站架构知识之Ansible模块(day021)

1.Ansible模块 作用:通过ansible模块实现批量管理 2.command模块与shell模块 command模块是ansible默认的模块&#xff0c;适用于执行简单的命令&#xff0c;不支持特殊符号 案列01&#xff0c;批量获取主机名 ansible all -m command -a hostname all表示对主机清单所有组…