跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Svelte基础
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Svelte基础 = '''Svelte''' 是一种现代的前端框架,与其他流行的框架(如React、Vue或Angular)不同,它采用了一种独特的编译时方法。Svelte在构建时将组件转换为高效的原生JavaScript代码,而不是在运行时进行虚拟DOM操作。这使得Svelte应用程序通常具有更小的体积和更高的性能。本指南将介绍Svelte的核心概念、语法和实际应用,适合初学者和希望深入了解Svelte的程序员。 == Svelte简介 == Svelte由Rich Harris于2016年创建,其核心理念是“编译时框架”。与React或Vue不同,Svelte在构建时将组件编译为高效的JavaScript代码,而不是在浏览器中运行一个庞大的框架库。这意味着: * '''更小的包体积''':无需加载框架运行时,减少了初始加载时间。 * '''更高的性能''':直接操作DOM,避免了虚拟DOM的开销。 * '''更简单的语法''':接近原生HTML、CSS和JavaScript的写法,降低了学习成本。 Svelte适用于构建交互式用户界面,从小型组件到完整的单页应用(SPA)均可胜任。 == 核心概念 == === 1. 组件结构 === Svelte组件以<code>.svelte</code>为扩展名,包含三个部分: * '''脚本(Script)''':定义组件的逻辑。 * '''样式(Style)''':定义组件的样式(默认作用域仅限于当前组件)。 * '''模板(Template)''':定义组件的HTML结构。 以下是一个简单的Svelte组件示例: <syntaxhighlight lang="svelte"> <script> let name = "World"; </script> <style> h1 { color: blue; } </style> <h1>Hello {name}!</h1> </syntaxhighlight> '''输出''': <pre> Hello World! </pre> === 2. 响应式声明 === Svelte使用赋值操作符(<code>=</code>)实现响应式数据绑定。当数据变化时,UI自动更新。 <syntaxhighlight lang="svelte"> <script> let count = 0; function increment() { count += 1; } </script> <button on:click={increment}> Clicked {count} {count === 1 ? 'time' : 'times'} </button> </syntaxhighlight> '''输出''': <pre> Clicked 0 times </pre> (点击按钮后,数字会递增) === 3. 条件与循环 === Svelte使用<code>{#if}</code>和<code>{#each}</code>处理条件渲染和列表渲染。 <syntaxhighlight lang="svelte"> <script> let show = true; let items = ["Apple", "Banana", "Cherry"]; </script> {#if show} <p>This is visible!</p> {/if} <ul> {#each items as item} <li>{item}</li> {/each} </ul> </syntaxhighlight> '''输出''': <pre> This is visible! • Apple • Banana • Cherry </pre> === 4. 事件处理 === Svelte使用<code>on:</code>指令绑定事件。 <syntaxhighlight lang="svelte"> <script> function handleClick() { alert("Button clicked!"); } </script> <button on:click={handleClick}> Click Me </button> </syntaxhighlight> === 5. 双向绑定 === Svelte通过<code>bind:</code>指令实现双向数据绑定。 <syntaxhighlight lang="svelte"> <script> let name = ""; </script> <input bind:value={name} placeholder="Enter your name"> <p>Hello {name || 'stranger'}!</p> </syntaxhighlight> '''输出''': <pre> (输入框输入内容后,下方文本会实时更新) </pre> == 实际案例:待办事项应用 == 以下是一个简单的待办事项应用示例,展示Svelte的实际应用: <syntaxhighlight lang="svelte"> <script> let todos = []; let newTodo = ""; function addTodo() { if (newTodo.trim()) { todos = [...todos, { text: newTodo, done: false }]; newTodo = ""; } } function toggleDone(todo) { todo.done = !todo.done; todos = todos; // 触发响应式更新 } </script> <style> .done { text-decoration: line-through; color: gray; } </style> <input bind:value={newTodo} placeholder="Add a new task"> <button on:click={addTodo}>Add</button> <ul> {#each todos as todo (todo.text)} <li class:done={todo.done} on:click={() => toggleDone(todo)}> {todo.text} </li> {/each} </ul> </syntaxhighlight> '''功能说明''': * 用户可以在输入框中添加新任务。 * 点击任务可以切换完成状态(显示为删除线)。 * 任务列表自动更新。 == Svelte与其他框架对比 == 以下是一个简单的对比表: {| class="wikitable" |- ! 特性 !! Svelte !! React !! Vue |- | '''编译方式''' || 编译时 || 运行时 || 运行时 + 编译时 |- | '''虚拟DOM''' || 无 || 有 || 有 |- | '''语法复杂度''' || 低 || 中 || 中 |- | '''包大小''' || 小 || 中 || 中 |} == 进阶主题 == === 1. 状态管理 === Svelte提供<code>writable</code>和<code>readable</code>存储来实现全局状态管理。 <syntaxhighlight lang="svelte"> <script> import { writable } from 'svelte/store'; const count = writable(0); function increment() { count.update(n => n + 1); } </script> <button on:click={increment}> Count: {$count} </button> </syntaxhighlight> === 2. 动画支持 === Svelte内置动画支持,例如<code>fade</code>、<code>slide</code>等。 <syntaxhighlight lang="svelte"> <script> import { fade } from 'svelte/transition'; let visible = true; </script> <button on:click={() => visible = !visible}> Toggle </button> {#if visible} <p transition:fade>Fade in/out</p> {/if} </syntaxhighlight> === 3. 生命周期钩子 === Svelte提供生命周期函数如<code>onMount</code>、<code>onDestroy</code>等。 <syntaxhighlight lang="svelte"> <script> import { onMount } from 'svelte'; onMount(() => { console.log("Component mounted"); return () => console.log("Component destroyed"); }); </script> </syntaxhighlight> == 总结 == Svelte是一种创新的前端框架,通过编译时优化提供了高性能和小体积的优势。其简洁的语法和直观的响应式系统使其成为初学者和高级开发者的理想选择。通过学习Svelte,你可以快速构建高效、交互式的Web应用程序。 [[Category:编程语言]] [[Category:JavaScript]] [[Category:Javascript框架介绍]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)