Qwik框架指南

核心概念

Resumability

无需水化,状态序列化到HTML,按需恢复

Lazy Loading

每个事件处理器和组件都是懒加载,O(1)启动

Signals

细粒度响应式,只重新渲染变化的部分

Server Functions

server$() 实现客户端和服务端的类型安全 RPC

快速入门

npm create qwik@latest cd my-app && npm install && npm start

组件示例

import { component$, useSignal } from '@builder.io/qwik'; export const Counter = component$(() => { const count = useSignal(0); return ( <div> <p>Count: {count.value}</p> <button onClick$={() => count.value++}>+1</button> </div> ); });

服务端函数(RPC)

import { server$ } from '@builder.io/qwik-city'; const getUsers = server$(async () => { // 仅在服务端运行 const db = await connectDB(); return db.query('SELECT * FROM users'); }); export const MyComp = component$(() => { const users = useSignal<User[]>([]); return ( <button onClick$={async () => { users.value = await getUsers(); }}> Load Users </button> ); });

Qwik vs React 对比

特性ReactQwik
水化完全水化可恢复(无水化)
客户端 JS 量所有组件代码交互时懒加载
状态useState, hooksuseSignal, useStore
响应性虚拟DOM比较基于Signal