Fusor
## 项目简介 Fusor 是一个实验性响应式 Web 框架,其核心理念是:用 Rust 编写前端逻辑
项目简介
Fusor 是一个实验性响应式 Web 框架,其核心理念是:用 Rust 编写前端逻辑,用普通 HTML 编写模板,框架将 Rust 代码编译为 WebAssembly 并在浏览器中运行。没有虚拟 DOM,没有 JSX 宏,HTML 始终保持为原生 HTML。
与传统前端框架不同,Fusor 将标记语言(HTML)和编程语言(Rust)的边界完全透明化:组件由一个 .html 模板文件和一个 Rust 模块文件共同构成,两者由编译器在构建时联合检查,任何模板中的表达式错误都会在 Rust 编译时报出。
核心功能
-
HTML 模板:所有 UI 结构写在纯 HTML 文件中,支持标准 HTML 元素、class、label 和表单,可直接用 CSS 样式,无需学习特殊模板语法
-
Rust 状态管理:页面状态用 Rust struct 管理,方法即行为逻辑,类型系统全程介入,告别运行时才暴露的类型错误
-
细粒度响应式更新:编译为 WebAssembly 后,每个模板绑定只追踪它实际读取的信号(Signal),当信号变化时仅重绘受影响的那部分 DOM,不存在整体虚拟 DOM diff
-
事件绑定:通过 on:click、bind:value 等属性直接在 HTML 中调用 Rust 方法,替代 JavaScript 事件监听器
-
生命周期自动清理:监听器、副作用请求和异步任务归属于创建它们的组件,组件移除时自动清理,无需手动管理
-
服务端渲染与 Islands 架构:可选包 fusor-server 支持将组件渲染为 HTML 字符串,实现 SSR;fusor-islands 支持独立交付的 Wasm 孤岛,按需加载
-
路由与异步资源:官方提供 routing、async resources、shared queries 等可选扩展包
-
CodeMirror / Chart.js 集成:提供 Rust 状态与第三方库的集成示例,可直接用于生产项目
技术实现
Fusor 的核心创新在于将前端开发的两个最大痛点——标记语言与编程语言的割裂、虚拟 DOM 的运行时开销——在编译器层面一并解决。
Rust 源码通过 Cargo 编译为 WebAssembly,运行时极小(核心库约 76.6 KiB),无任何外部运行时依赖。框架通过 template!() 宏将 Rust 模块与 HTML 模板在编译时绑定,确保两者始终同步。模板中的双花括号表达式和事件属性在编译阶段转换为 Rust 代码,与手写 Rust 无异。
信号(Signal)是 Fusor 的核心响应式单元。每个信号追踪其依赖图,变化时通过编译器生成的绑定代码精确更新受影响的 DOM 节点。由于绑定关系在编译时确定,Fusor 无需在运行时维护虚拟 DOM 树或进行差异对比,这在性能敏感的应用中具有显著优势。
快速上手
-
安装 Rust 环境:确保本地安装 Rust 1.85 或更高版本
-
安装 Fusor CLI:运行 cargo install --path crates/fusor-cli --locked 全局安装 fusor 命令行工具
-
创建新项目:执行 fusor new my-app,在当前目录下初始化项目
-
进入开发模式:执行 cd my-app && fusor dev,CLI 打印本地预览地址
-
编辑组件:在 web/components/ 目录编辑 .html 模板和对应 Rust 模块,保存后自动热重载
-
检查错误:运行 fusor check 进行编译器检查,验证 Rust 与 HTML 的类型一致性
适用人群
对性能有极致追求、愿意使用 Rust 进行前端开发的工程师;希望借助编译器消除模板运行时错误的强迫症开发者;以及对探索无虚拟 DOM 响应式架构这一新兴方向感兴趣的前端研究者。
评论与建议
登录 后参与评论或提建议