SuperAPI AI 工具集

svelte-core-bestpractices

前端与建站

查看项目

更新于 10-15 20:34

技能介绍

用途:在 Svelte 项目中编写、编辑或分析组件时提供最佳实践指导,帮助写出快速、健壮、现代的 Svelte 代码。

主要能力与建议:

  • $state:仅用于需要响应式的变量;对象和数组会深度响应,但需代理,有性能开销。仅被重新赋值(而非变更)的大对象(如 API 响应)宜用 $state.raw。
  • $derived:从状态计算值应使用 $derived 而非 $effect;$derived 接收表达式而非函数,复杂表达式用 $derived.by。派生值可写,表达式变化时会重新求值;若表达式为对象或数组则按原样返回,不做深度响应。
  • $effect:属于逃生舱,应尽量避免,尤其避免在 effect 内更新状态。同步外部库可用 {@attach ...};响应用户交互直接写在事件处理器或用函数绑定;调试用 $inspect;观察外部事物用 createSubscriber。不要用 if (browser) 包裹 effect 内容。
  • $props:应视为会变化;依赖 props 的值通常用 $derived。
  • $inspect.trace:响应式调试工具,可放在 $effect 或 $derived.by 首行追踪依赖。
  • 事件:以 on 开头的属性视为事件监听器,支持属性简写与展开;window/document 监听用 svelte:window 和 svelte:document,避免 onMount 或 $effect。
  • Snippets:在模板中声明可复用标记,用 {@render ...} 实例化或作为 props 传递。
  • each 块:优先使用带 key 的 each 块以提升性能;key 须唯一,不要用索引;若需变更项则避免解构。
  • 样式:可用 style: 指令设置 CSS 自定义属性;父组件控制子组件样式优先用 CSS 自定义属性,必要时用 :global。
  • 上下文:优先用 context 而非共享模块状态,避免 SSR 时用户间泄漏;用 createContext 而非 setContext/getContext 以获得类型安全。
  • 异步 Svelte:5.36 及以上可用 await 表达式和 hydratable,需在 svelte.config.js 启用 experimental.async,尚未完全稳定。
  • 避免旧特性:新代码用 runes 模式,用 $state、$derived/$effect、$props、onclick、{#snippet}/{@render}、<DynamicComponent>、自导入组件、带 $state 字段的类、{@attach ...}、clsx 风格 class 属性,替代隐式响应式、$:、export let/$$props/$$restProps、on:click、<slot>/$$slots/svelte:fragment、svelte:component、svelte:self、stores、use:action、class: 指令。

限制:资料未提供安装命令、收费、平台或效果数据;异步特性需实验性配置且未完全稳定。