Svelte 5 完全指南:从入门到跨端应用开发

Svelte 5 完全指南:从入门到跨端应用开发

系列目录

  1. Svelte 5 完全指南:从入门到跨端应用开发
  2. Svelte 5 完全指南: 从入门到跨端应用开发 - 全新特性 Runes

一、Svelte 简介与发展背景

1.1 什么是 Svelte?

Svelte 是一个革命性的前端框架,与传统的虚拟 DOM 框架(如 React、Vue)有着本质区别。它采用编译时优化机制,将组件化开发的代码在构建阶段直接转换为高效的 DOM 操作指令,而非在浏览器中运行时解释执行。这种独特的设计理念使得 Svelte 生成的应用程序轻量、高效且性能卓越。

Svelte 5 是该框架的最新主要版本,于 2024 年底发布,是该项目历史上最重要的版本更新。Svelte 5 带来了重大改进,包括全新的响应式系统、更简洁的语法和增强的开发体验。截至 2025 年 7 月,Svelte 在 GitHub 上的 star 数量已突破 8 万,npm 周下载量达 179 万,在新兴项目中的采用率飙升至 42%。

1.2 Svelte 产生的原因

Svelte 的诞生源于其作者 Rich Harris 对传统前端框架痛点的深刻洞察。在 2019 年,Web 组件似乎很有可能成为组件的主要分发机制,而 Svelte 希望与平台保持一致。然而,随着时间推移,这一假设被证明是不准确的。

传统框架(如 React、Vue)在运行时通过虚拟 DOM 或 Proxy 监听实现响应式更新,这虽然提供了灵活性,但也带来了显著的运行时开销。相比之下,Svelte 将这些工作提前到编译阶段完成,从而大大减少了浏览器端的负担。

Svelte 设计的核心理念在于 "通过静态编译减少框架运行时的代码量"。随着越来越多的人使用 Svelte 构建更大、更复杂的应用程序,最初的一些设计决策的局限性开始变得明显。这促使开发团队在 Svelte 5 中进行了全面重构,以应对现代前端开发的挑战。

二、快速上手 Svelte 5

2.1 环境准备

在开始使用 Svelte 5 之前,确保你的开发环境满足以下要求:

  1. Node.js:建议使用最新 LTS 版本(v18+)
  2. 包管理器:npm、pnpm 或 yarn(推荐使用 pnpm)

安装 Svelte 有多种方式,根据你的项目需求选择最适合的方法:

使用 Vite 创建新项目

Vite 是一个现代的构建工具,为 Svelte 提供了快速的开发体验:

shell 复制代码
npm create vite@latest my-svelte-app --template svelte-tscd my-svelte-appnpm installnpm run dev
使用 SvelteKit 创建全栈应用

SvelteKit 是 Svelte 的官方元框架,提供了服务器端渲染、静态站点生成等高级功能:

复制代码
npm create svelte@latest my-sveltekit-appcd my-sveltekit-appnpm installnpm run dev
使用 Tauri 创建跨平台应用

如果你计划构建桌面应用,Tauri 是一个优秀的选择:

复制代码
npm create vite@latest my-tauri-app --template svelte-tscd my-tauri-appnpm installpnpm add --save-dev @tauri-apps/clipnpm tauri init

2.2 核心语法概览

Svelte 的语法简洁直观,易于上手,尤其是对于有前端开发经验的开发者:

基本组件结构

Svelte 组件通常包含三个部分:脚本、标记和样式:

typescript 复制代码
<script>
  // 这里定义组件的逻辑和状态
  let count = 0;
  function increment() {
    count += 1;
  }
</script>

<main>
  <!-- 这里定义组件的结构 -->
  <h1>Counter: {count}</h1>
  <button on:click={increment}>Increment</button>
</main>

<style>
  /* 这里定义组件的样式 */
  main {
    text-align: center;
    margin-top: 50px;
  }
</style>
响应式声明(Reactive Declarations)

Svelte 5 引入了符文(Runes)系统,提供了更清晰的响应式编程方式:

typescript 复制代码
<script>
  // 声明响应式状态
  let count = $state(0);
  
  // 声明派生状态
  let doubled = $derived(count * 2);
  
  // 声明副作用
  $effect(() => {
    console.log(`Count changed to ${count}`);
  });
  
  // 声明组件属性
  let { name = "Guest" } = $props();
</script>

<p>Hello, {name}!</p>
<p>Count: {count}</p>
<p>Double: {doubled}</p>

2.3 构建不同类型的应用

构建单页应用(SPA)

SvelteKit 提供了开箱即用的单页应用支持。要创建一个基本的 SPA:

  1. 使用 SvelteKit 模板创建项目
  2. 配置路由系统(SvelteKit 使用文件系统路由)
  3. 启用客户端路由模式
typescript 复制代码
// svelte.config.js
import { vitePreprocess } from '@sveltejs/kit/vite';

export default {
  kit: {
    // 配置客户端路由
    adapter: adapter({
      pages: 'build',
      assets: 'build',
      fallback: 'index.html'
    })
  },
  preprocess: vitePreprocess()
};
构建静态网站

Svelte 非常适合构建静态网站,尤其是对性能要求高的博客或文档站点:

复制代码
# 使用 SvelteKit 静态适配器
npm install @sveltejs/adapter-static
typescript 复制代码
// svelte.config.js
import adapter from '@sveltejs/adapter-static';
import { vitePreprocess } from '@sveltejs/kit/vite';

export default {
  kit: {
    adapter: adapter({
      pages: 'build',
      assets: 'build',
      fallback: null,
      precompress: false
    })
  },
  preprocess: vitePreprocess()
};
构建移动端应用

对于移动端应用开发,有两种主要选择:

  1. Svelte Native:基于 NativeScript 的移动开发框架
  2. Tauri:跨平台桌面和移动应用开发框架

使用 Svelte Native 创建移动应用:

复制代码
npm install -g nativescript
ns create my-mobile-app --svelte
cd my-mobile-app
ns run android
构建高性能桌面应用

对于高性能桌面应用,推荐使用 Svelte + Tauri 组合:

复制代码
# 初始化 Tauri 项目
pnpm tauri init

# 配置 Tauri 窗口设置
{
  "tauri": {
    "windows": [{
      "title": "My App",
      "width": 800,
      "height": 600,
      "resizable": true,
      "decorations": false
    }],
    "permissions": ["core:webview:allow-create-webview"]
  }
}

三、Svelte 5 核心概念

3.1 编译时优化机制

Svelte 的核心竞争力在于其独特的编译时优化机制,这使其与传统框架有着本质区别:

依赖追踪与 DOM 操作

Svelte 5 的响应式系统基于编译时分析,在构建阶段(通过 Vite 编译)自动识别状态变量与 DOM 的依赖关系,生成直接操作真实 DOM 的代码。这与 React(运行时虚拟 DOM diff)、Vue(运行时 Proxy 监听)的最大区别是:依赖追踪在编译时完成,无需运行时开销

typescript 复制代码
<script>
  let content = '';
</script>

<div>{@html content}</div>

这段代码在构建后会直接被编译为操作 DOM 的指令,而非运行时函数调用。

性能优势

编译时优化带来了显著的性能优势:

  1. 减少 JavaScript 包体积
  2. 提升首屏加载速度 30%+
  3. 降低 CPU 占用率,特别适合低配设备运行
  4. 在实时数据流场景(如股票行情)中,Svelte 5 的更新延迟比 React 低 58%,内存占用减少 34%

3.2 细粒度更新机制

Svelte 通过响应式系统自动追踪依赖关系,仅更新受影响的 DOM 节点,实现了细粒度更新。

typescript 复制代码
{#if isSaved}
  <span>已保存 ✅</span>
{:else}
  <button on:click={() => isSaved = true}>保存文章</button>
{/if}

当 isSaved 变化时,只有 或 部分重新渲染,不影响其他 UI 元素。

这种机制带来的性能收益包括:

  1. 减少不必要的重绘与重排
  2. 用户交互更流畅,响应更快
  3. 尤其适用于高频率状态变化的界面

3.3 响应式系统与符文(Runes)

Svelte 5 引入了全新的响应式系统,其核心是符文(Runes)机制:

符文类型

Svelte 5 提供了多种符文,用于不同的响应式编程场景:

  1. $state:用于声明响应式状态
  2. $derived:用于声明派生状态
  3. $effect:用于处理副作用
  4. $props:用于声明组件属性
  5. $inspect:用于调试响应式状态
响应式块

Svelte 中,任何以 $: 开头的代码块会被标记为 "响应式块"。编译器会分析块内所有被读取的变量,并建立依赖关系图:当任一依赖变量变化时,仅重新执行该块。

typescript 复制代码
<script>
  let count = 0;
  
  // 响应式块
  $: console.log(`Current count: ${count}`);
</script>

3.4 组件生命周期与状态管理

Svelte 5 采用了全新的响应式系统,其核心思想是:组件生命周期仅包含创建和销毁两个阶段。与传统框架不同,Svelte 5 不再将 "更新" 视为组件级别的概念,而是通过细粒度的响应式系统来精确控制 UI 更新。

生命周期钩子

Svelte 5 提供了以下生命周期钩子:

  1. onMount:在组件挂载到 DOM 后调用
  2. onDestroy:在组件从 DOM 中移除前调用
  3. beforeUpdate / afterUpdate:已被弃用,推荐使用更精细的响应式系统
状态管理

Svelte 5 提供了三种内置 Store 类型,覆盖从简单到复杂的状态场景:

  1. Writable Store:基础可写状态
typescript 复制代码
import { writable } from 'svelte/store';

const count = writable(0);
count.set(5);
count.update(n => n + 1);
  1. Derived Store:派生状态
typescript 复制代码
import { derived } from 'svelte/store';

const doubled = derived(count, $count => $count * 2);
  1. Readable Store:异步与外部事件的封装
typescript 复制代码
import { readable } from 'svelte/store';

const timer = readable(0, set => {
  const interval = setInterval(() => set(n => n + 1), 1000);
  return () => clearInterval(interval);
});

3.5 组件组合与插槽

Svelte 5 改进了组件组合机制,解决了 Svelte 4 中的一些尴尬设计。在 Svelte 5 中,事件处理程序和 "插槽内容" 被视为与传递给组件的 props 一致的概念。

插槽(Slots)

Svelte 5 引入了 {#snippet ...} 语法,用于在组件内创建可重用的标记块:

typescript 复制代码
{#snippet figure(image)}
  <figure>
    <img
      src={image.src}
      alt={image.caption}
      width={image.width}
      height={image.height}
    />
    <figcaption>{image.caption}</figcaption>
  </figure>
{/snippet}

{#each images as image}
  {#if image.href}
    <a href={image.href}>
      {@render figure(image)}
    </a>
  {:else}
    {@render figure(image)}
  {/if}
{/each}
事件处理

Svelte 5 对事件处理进行了简化,弃用了 createEventDispatcher 和 on: 指令,改用回调属性:

typescript 复制代码
<script>
  let count = $state(0);
  function handleClick() {
    count++;
  }
</script>

<button onclick={handleClick}>Click me</button>

四、打包部署与开发要点

4.1 使用 Vite 进行开发与构建

Vite 是 Svelte 的官方构建工具,提供了快速的开发体验和高效的生产构建。

开发服务器

启动开发服务器:

复制代码
npm run dev

Vite 提供了热模块替换(HMR),让你在修改代码时即时看到变化。

生产构建

生成生产环境构建:

复制代码
npm run build

构建完成后,你可以通过 vite preview(通过 npm run preview)在本地查看生产构建。

配置优化

根据项目需求,你可以优化 Vite 配置:

复制代码
// vite.config.js
import { defineConfig } from 'vite';
import svelte from '@sveltejs/vite-plugin-svelte';

export default defineConfig({
  plugins: [svelte()],
  build: {
    // 配置生产构建选项
    minify: 'terser',
    sourcemap: true
  }
});

4.2 与 Tauri 集成构建跨端应用

Tauri 是一个基于 Rust 的跨平台应用开发框架,可以与 Svelte 完美集成,构建高性能的桌面应用。

集成步骤
  1. 安装 Tauri CLI

    pnpm add --save-dev @tauri-apps/cli

  2. 初始化 Tauri 项目

    pnpm tauri init

  3. 配置 Tauri

json 复制代码
// tauri.conf.json
{
  "tauri": {
    "windows": [{
      "title": "Tauri Svelte Demo",
      "width": 800,
      "height": 600,
      "resizable": true,
      "decorations": false
    }],
    "permissions": ["core:webview:allow-create-webview"]
  }
}
  1. 前端与后端交互
typescript 复制代码
<!-- 前端调用 -->
<script>
  import { invoke } from '@tauri-apps/api';
  
  async function fetchData() {
    const message = await invoke('get_system_info');
    console.log(message);
  }
</script>

<button on:click={fetchData}>获取系统信息</button>
rust 复制代码
// Rust 后端接口
#[tauri::command]
fn get_system_info() -> String {
  let os_info = os_info::get();
  format!(
    "操作系统: {}\n内核版本: {}\n架构: {}",
    os_info.os_type(),
    os_info.version(),
    std::env::consts::ARCH
  )
}

fn main() {
  tauri::Builder::default()
    .invoke_handler(tauri::generate_handler![get_system_info])
    .run(tauri::generate_context!())
    .expect("运行失败");
}
跨平台优化

针对不同平台,你可以进行以下优化:

  1. 响应式布局适配
typescript 复制代码
<script>
  import { window } from '@tauri-apps/api';
  
  let windowSize = { width: 0, height: 0 };
  
  window.getCurrent().listen('tauri://resize', ({ payload }) => {
    windowSize = payload;
  });
</script>

<div class="container" style="width: {windowSize.width}px">
  <!-- 自适应内容 -->
</div>
  1. 移动端配置
json 复制代码
// tauri.conf.json
{
  "tauri": {
    "mobile": {
      "ios": { "bundleId": "com.example.tauri-svelte" },
      "android": { "packageName": "com.example.tauri_svelte" }
    }
  }
}
构建与发布

生成各平台安装包:

复制代码
pnpm tauri build

自定义安装包图标:将 icon.png 放入 src-tauri/icons 目录,Tauri 会自动识别。

4.3 性能优化与最佳实践

代码分割

SvelteKit 默认按路由进行代码分割,实现按需加载:

复制代码
src/routes/
├── main/
│   └── +page.svelte
├── settings/
│   └── +page.svelte
└── about/
    └── +page.svelte

每个页面都会被单独打包成 chunk,首次加载仅加载核心模块。

按需加载

对于大型应用,可以使用动态导入实现按需加载:

typescript 复制代码
<script>
  let Component;
  
  $effect(() => {
    if (shouldLoadComponent) {
      import('./HeavyComponent.svelte').then(module => {
        Component = module.default;
      });
    }
  });
</script>

{#if Component}
  <Component />
{/if}
资源优化
  1. 图片优化:使用现代图片格式(WebP、AVIF)
  2. CSS 优化:使用 CSS 压缩工具
  3. 字体优化:按需加载字体,使用字体子集
部署优化
  1. 启用 Gzip 或 Brotli 压缩
  2. 配置 CDN 加速
  3. 设置合理的缓存策略
  4. 使用 HTTP/2 或 HTTP/3

五、Svelte 生态系统

5.1 核心工具与框架

SvelteKit

SvelteKit 是 Svelte 的官方元框架,提供了一系列高级功能,包括:

  1. 路由系统:基于文件系统的路由

  2. 服务器端渲染(SSR)

  3. 静态站点生成(SSG)

  4. 数据获取:内置 load 函数用于获取数据

  5. 表单处理:内置表单验证和提交处理

    // src/routes/+page.server.svelte
    export async function load({ fetch }) {
    const res = await fetch('https://api.example.com/data');
    const data = await res.json();
    return { props: { data } };
    }

Vite

Vite 是 Svelte 的官方构建工具,提供了:

  1. 快速的开发服务器:基于 ES 模块
  2. 高效的生产构建:基于 Rollup
  3. 热模块替换(HMR)
  4. 插件系统:支持各种预处理和转换

5.2 状态管理解决方案

内置 Store 系统

Svelte 提供了三种内置 Store 类型,覆盖从简单到复杂的状态场景:

  1. Writable Store:基础可写状态
  2. Derived Store:派生状态
  3. Readable Store:异步与外部事件的封装
高级状态管理库

对于大型应用,你可能需要更高级的状态管理解决方案:

  1. SvelteRx:将 RxJS 与 Svelte 集成
  2. SvelteKit 内置状态管理:适合中等规模应用
  3. Pinia:Vue 的状态管理库,可与 Svelte 集成

5.3 UI 组件库与样式解决方案

主流 UI 组件库

Svelte 生态系统中有多个优秀的 UI 组件库:

  1. Svelte Material UI:实现 Google Material Design 风格的组件库
  2. Carbon Components Svelte:IBM 开源设计的组件库
  3. Smelte:Google Material Design 在 Svelte 和 Tailwind 上的实现
  4. Svelteit:简约的 UI/UX 组件库
  5. Flowbite Svelte:现代、响应式的 UI 组件库
样式解决方案

Svelte 支持多种样式解决方案:

  1. Scoped Styles:组件作用域内的样式
  2. CSS Modules:模块化 CSS
  3. Tailwind CSS:实用优先的 CSS 框架
  4. UnoCSS:原子化 CSS 框架
  5. Svelte Scoped:避免不断增长的全局 CSS 文件

5.4 开发工具与扩展

编辑器支持
  1. VS Code 扩展:Svelte for VS Code
  2. JetBrains IDE 支持:Svelte 插件
  3. 语法高亮:大多数编辑器都提供 Svelte 语法高亮
开发辅助工具
  1. Svelte DevTools:浏览器扩展,用于调试 Svelte 应用
  2. svelte-preprocess:Svelte 预处理工具
  3. Svelte 插件:用于 ESLint、Prettier 等工具的插件
  4. TypeScript 支持:Svelte 5 提供了更好的 TypeScript 支持,不再需要预处理器

5.5 测试与质量保障

Svelte 对测试框架没有特别限制,你可以选择适合项目的测试工具:

单元测试
  1. Vitest:由 Vite 驱动的下一代测试框架,支持 Svelte 组件测试
  2. Jest:广泛使用的测试框架,与 Svelte 兼容
  3. Mocha:灵活的测试框架
组件测试

要测试 Svelte 组件,可以使用:

  1. @testing-library/svelte:用于测试 Svelte 组件的工具库
  2. Vitest:内置对 Svelte 组件的支持
  3. Svelte Testing Library:专门为 Svelte 设计的测试工具
端到端测试

对于端到端测试,可以使用:

  1. Cypress:流行的端到端测试工具
  2. Playwright:跨浏览器测试工具
  3. TestCafe:无浏览器测试工具

5.6 社区与资源

官方资源
  1. Svelte 官方文档https://svelte.dev/docs
  2. SvelteKit 文档https://kit.svelte.dev/docs
  3. Svelte 教程https://learn.svelte.dev/
  4. Svelte 论坛https://forum.svelte.dev/
社区资源
  1. Svelte 中文社区https://svelte-china.org/
  2. Svelte 中文文档https://svelte.yayujs.com/
  3. Svelte 开发者社区https://discord.gg/svelte
  4. Svelte 学习资源https://svelte.dev/learn
学习资料
  1. 《Svelte 开发指南》:语法篇、实战篇、原理篇三大篇章系统掌握 Svelte
  2. Svelte 中文教程系列:包括 40 多篇教程,涵盖从入门到高级的内容
  3. Svelte 实战项目:各种实战项目,帮助快速掌握 Svelte 开发技能

六、未来发展与展望

6.1 Svelte 5 的最新发展

Svelte 5 是该项目历史上最重要的版本,带来了多项重大改进:

  1. 全新的响应式系统:基于符文(Runes)的细粒度响应式系统
  2. 改进的组件组合:更直观的组件组合机制
  3. 增强的 TypeScript 支持:原生 TypeScript 支持,不再需要预处理器
  4. 新的事件处理模型:更简洁的事件处理方式
  5. 性能优化:显著提升运行时性能和内存效率

6.2 生态系统发展趋势

  1. SvelteKit 3.0:实现零配置 SSR、基于文件系统的路由和内置表单处理,NASA 用它开发的火星数据面板将开发周期缩短 40%
  2. Tauri 集成:Svelte + Tauri 组合成为构建高性能桌面应用的热门选择
  3. 移动端支持:Svelte Native 不断发展,提供更好的移动端开发体验
  4. 企业级支持:越来越多的企业开始采用 Svelte 构建关键应用

6.3 与其他框架的对比

在 2025 年的前端框架格局中,Svelte 作为轻量级应用市场的颠覆者,2024-2025 年新增项目占比达 42%,编译时优化使打包体积缩小 40%,Lighthouse 性能评分普遍达 98+。

性能对比

指标 Svelte 5 React Vue 3.5
大数据列表渲染 (10 万行) 950ms, 58FPS, 210MB 3200ms, 18FPS, 480MB 2800ms, 22FPS, 420MB
高频状态更新 (每秒 100 次) 1.3ms 延迟,0% 丢帧率 8.2ms 延迟,高 CPU 占用 5.7ms 延迟

开发效率对比

在 Saga Reader 项目中,Svelte 5 与 React+Redux 相比:

  1. 相同功能代码量减少 40%
  2. 调试复杂度降低 50%
  3. 内存占用降低 80%(Electron+React 方案 ≥50MB vs Svelte 方案 ≤10MB)

6.4 学习路径与建议

对于想要学习和使用 Svelte 的开发者,建议的学习路径是:

  1. 掌握基础语法:学习 Svelte 的基本组件结构和语法
  2. 理解响应式系统:深入理解 Svelte 的响应式机制
  3. 学习 SvelteKit:掌握 SvelteKit 框架,用于构建现代应用
  4. 实践项目:通过实际项目巩固所学知识
  5. 探索生态系统:了解和使用各种生态系统工具和库

开发建议

  1. 从小型项目开始:先使用 Svelte 构建小型项目,逐渐过渡到大型项目
  2. 遵循最佳实践:关注官方文档和社区推荐的最佳实践
  3. 参与社区:加入 Svelte 社区,分享经验和学习资源
  4. 持续学习:关注 Svelte 的最新发展和更新

总结

Svelte 5 以其独特的编译时优化机制、轻量级运行时和简洁的语法,为现代前端开发提供了一种高效、高性能的解决方案。它不仅在性能方面表现卓越,在开发体验和代码简洁性方面也有明显优势。

随着 SvelteKit 的成熟和生态系统的不断完善,Svelte 正逐渐成为构建各种类型应用的理想选择,特别是对性能、包体积和开发效率有较高要求的项目。与 Tauri 的集成进一步扩展了 Svelte 的应用场景,使其能够轻松构建跨平台的桌面应用。

无论你是经验丰富的前端开发者,还是刚入行的新手,Svelte 都值得你深入学习和尝试。它可能会改变你对前端开发的看法,并成为你未来项目中的首选框架。

希望这份文档能帮助你快速掌握 Svelte 5 的核心概念和使用方法,开启你的 Svelte 开发之旅!


如果您在前端开发中面临着表格渲染性能瓶颈、数据可视化效果不佳,或是在企业级项目里对复杂表格交互一筹莫展,那么NexaGrid 技术博客(https://blog.touchall.tech)绝对是您不可错过的技术宝库。

在这里,您能找到:

  • 高性能表格组件深度剖析:多篇文章详细解读 NexaGrid 如何优化底层算法,实现海量数据秒级渲染,如《NexaGrid 数据渲染引擎探秘:从架构设计到性能调优实战》,助您突破表格性能天花板。
  • 前沿前端数据可视化技巧:涵盖各类数据可视化方案,教您如何运用 NexaGrid 打造直观、炫酷的数据看板,像《用 NexaGrid 构建动态数据可视化图表的全流程指南》,让数据 "开口说话"。
  • 企业级 UI 解决方案:针对企业复杂业务场景,分享 NexaGrid 实现复杂权限控制、多语言切换等功能的实践经验,例如《基于 NexaGrid 的企业级表格多语言与权限管理一体化方案》,助力您的项目高效落地。
相关推荐
半个烧饼不加肉几秒前
React + ts + react-webcam + CamSplitter 实现虚拟摄像头解决win摄像头独占的问题
前端·react.js·前端框架
代码的余温3 小时前
React核心:组件化与虚拟DOM揭秘
前端·react.js·前端框架
用户84913717547167 小时前
vue-element-plus-admin 第5期|Axios实战:HTTP 请求与数据处理
前端框架·axios·前端工程化
Thomas游戏开发1 天前
Unity Root Motion 开发详解
前端框架·unity3d·游戏开发
chancygcx_1 天前
前端框架Vue3(四)——组件通信及其他API
vue.js·前端框架
用户84913717547161 天前
vue-element-plus-admin 第4期|权限系统实战:动态路由 + 权限控制机制全解析
前端框架·vue-router·前端工程化
德育处主任1 天前
p5.js 3D模型(model)入门指南
前端·前端框架·canvas
懋学的前端攻城狮1 天前
从 UI = f(state) 到 Fiber 架构:解构 React 设计哲学的“第一性原理”
前端·react.js·前端框架
全球网站建设2 天前
从结构到交互:HTML5进阶开发全解析——语义化标签、Canvas绘图与表单设计实战
javascript·前端框架·php·reactjs·css3·html5