用途:这是面向 Leptos 框架的知识补丁,建议在编写、迁移或审查 Leptos 应用之前使用。先阅读破坏性变更清单,再按正在修改的代码打开对应主题参考。
主要能力与主题索引:cargo-leptos(预构建安装、支持的归档、校验和、稳定版热重载);迁移与配置(导入、构造函数、存储、选项、crate 版本、CSS、feature flags);响应式与 stores(Arc 信号、守卫、资源、自动批处理、转换、stores);路由、SSR 与集成(类型化路由、fallback、过渡、islands 路由、文档外壳、Axum);服务端函数与懒加载(自定义错误、WebSocket、编解码器、请求体限制、代码分割、懒路由);视图、组件与浏览器 API(类型化视图、属性展开、绑定、渲染 trait、ShowLet、平台属性)。
破坏性变更要点:用 use leptos::prelude::* 导入常用 API;路由组件从 leptos_router::components 导入,钩子从 leptos_router::hooks 导入;create_signal(...) 改为 signal(...),create_rw_signal(...) 改为 RwSignal::new(...);不要显式调用 batch(...),更新会自动批处理。通用 View 枚举已移除,需保持单一具体返回类型,少量分支用 Either,或对每个分支调用 .into_any() 擦除类型;递归组件必须装箱或擦除结果。路由需在 Routes 上提供 fallback,使用类型化路径段(通常用 path!),嵌套用 ParentRoute,无需嵌套时用 FlatRoutes;ParamsMap 为多值,需在 append 与 replace、取单值与取全部值之间明确选择。SSR 外壳必须返回 doctype、html、head、body,以及 AutoReload、HydrationScripts、MetaTags;get_configuration 是同步的,不要向 .leptos_routes(...) 传 LeptosOptions,水合使用 leptos::mount::hydrate_body,mount_to_body 保留给客户端渲染。LeptosOptions 与 ConfFile 不实现 Default,需显式加载或构造,其选项字符串为 Arc<str>。
响应式与资源:动态嵌套状态用 ArcRwSignal、ArcReadSignal 等 Arc* 原语,它们是 Clone 而非 Copy;.read()/.write() 守卫避免克隆,但需及时释放,持有守卫时重入同一响应式值可能死锁或 panic;默认使用线程安全的 SyncStorage,Rc 等线程本地值放入 LocalStorage 或使用 _local 构造函数。Resource 可直接 await,也可在另一个 Resource 内 await;异步 Suspense 子节点用 Suspend::new(...) 包裹;#[derive(Store)] 生成深度响应式字段访问器。
组件与路由行为:通过属性展开传递 DOM 属性及 class:、style:、prop:、on: 指令,单个显式普通属性用 attr:;复选框用 bind:checked,字符串值单选组用 bind:group,文本控件用 bind:value;<ShowLet> 渲染 Option,<Show> 可直接接收信号,Await 组件直接接收 Future。ProtectedRoute 响应条件变化并参与 Suspense;路由 fallback 可设置状态码或重定向;在 Routes 或 FlatRoutes 上设 transition=true 启用浏览器视图过渡;islands 应用启用 islands-router features 可在不水合整个应用的情况下实现客户端导航。
服务端函数与懒加载:服务端函数可使用任何实现 FromServerFnError 的错误;Websocket 协议通过服务端函数传递编码的 BoxedStream,不与 Resources 或 SSR 集成,需在客户端显式消费返回流;编解码器包括额外 HTTP 方法、直接 bitcode 与 Serde 支持的 bitcode;普通大请求体受 Axum 与 Actix 请求体限制约束,multipart 不受影响。配合匹配的 cargo-leptos,#[lazy] 将同步或异步函数转为懒加载异步函数,可与 #[server] 叠加;#[lazy_route] 将 LazyRoute 分为数据与视图两半。
cargo-leptos 工作流:目标平台存在预构建归档时优先使用固定版本的预构建 cargo-leptos,并校验其 SHA-256 校验和;开发热重载在稳定版 Rust 上可用;启用资源哈希时用 HashedStylesheet 渲染样式。
限制:资料未提供具体版本号、价格、平台支持范围或效果数据;使用前需自行核对各 crate 的兼容版本,不要假设所有 Leptos 工作区 crate 具有相同补丁版本。