Web
Slint 应用程序可在桌面、嵌入式和移动平台上运行。 用 Rust 或 C++ 编写的 Slint 应用程序也可以交叉编译到 WebAssembly(Wasm)并在 Web 浏览器中运行。
Slint 使用 WebGL 把你的 UI 渲染到一个 HTML <canvas> 元素中,而不使用 DOM 或 CSS。
这带来了跨平台一致的外观,但也引入了一些限制:
- Slint 直接渲染文本,而不是受益于浏览器的文本渲染。
- 无障碍功能(如屏幕阅读器)不可用。
- UI 的行为不像典型的 Web 应用程序,因为它不使用标准 HTML 元素。
由于这些取舍,目前不推荐用浏览器中运行的 Slint 来构建通用 Web 应用程序。 相反,它最适合用于:
- 可以直接在浏览器中运行、无需安装的演示和示例。
- Web 不是主要平台,但仍需要一致 UI 的应用程序。
- 原生风格渲染比 Web 集成更重要的工具或仪表板。
为 Wasm 构建
Section titled “为 Wasm 构建”如需分步讲解,请查看 quickstart 的最后一章。
下面是主要步骤的摘要:
在你的 Cargo.toml 中,将 crate 类型设置为 "cdylib",并为 “wasm” 目标添加 wasm-bindgen 作为依赖项:
[lib]#...crate-type = ["cdylib"]
[target.'cfg(target_family = "wasm")'.dependencies]wasm-bindgen = { version = "0.2" }使用 wasm-bindgen(start) 属性来标记应用程序的入口点。
UI 像往常一样创建并运行:
#[cfg(target_family = "wasm")]use wasm_bindgen::prelude::*;
slint::include_modules!(); // or slint!(...)
#[cfg_attr(target_family = "wasm", wasm_bindgen(start))]pub fn main() { // Usual application code let main_window = MainWindow::new().unwrap(); main_window.run().unwrap();}使用 wasm-pack 构建应用程序。
wasm-pack build --release --target web这会创建一个 pkg/ 目录,其中包含 .wasm 和 .js 文件,以及一个以你的包命名的 JavaScript 文件。
在你的 HTML 文件中导入 wasm 二进制文件。
Slint 期望有一个 id = "canvas" 的 <canvas> HTML 元素。
<canvas id="canvas"></canvas><script type="module"> import init from './pkg/YOUR_APPLICATION.js'; init();</script>把 YOUR_APPLICATION 替换为你的 crate 名称。
用于 Web 的 Slint C++ 应用程序是一个标准 CMake 项目(参见 入门教程), 使用 Emscripten 工具链构建。
安装先决条件:
- Emscripten SDK。
- Rust Emscripten 工具链:运行
rustup target add wasm32-unknown-emscripten。 - CMake 3.21 或更新版本,以及可选的 Ninja。
当你使用 Emscripten 的工具链配置 Slint 时,它的 CMakeLists.txt 会自动:
- 为
wasm32-unknown-emscriptenRust 目标把 Slint 构建为静态库。 - 启用基于 WebGL 2 的 FemtoVG 渲染器和软件渲染器。
- 把图像和字体嵌入二进制文件,因为页面无法从构建机器读取文件。
- 向
Slint::Slint添加 Slint 所需的链接选项。
你的 main() 函数按原样工作。
run() 把控制权交给浏览器且不会返回,
因此其后的代码不会运行。
- 让 Emscripten 在
.js和.wasm文件旁边写一个 HTML 页面:
add_executable(my_app main.cpp)if(EMSCRIPTEN) set_target_properties(my_app PROPERTIES SUFFIX ".html")endif()- 使用
emcmake配置并构建:
emcmake cmake -S . -B build-web -GNinja -DCMAKE_BUILD_TYPE=Releasecmake --build build-web- 通过 Web 服务器提供输出目录,并打开
my_app.html,例如:
python3 -m http.server -d build-web要改为使用你自己的页面,请添加一个 <canvas id="canvas"> 并加载 my_app.js。
Slint 会调整 canvas 的尺寸以适配窗口。
如果要改为让 canvas 随页面布局,请在其 style 属性中给出宽度和高度,
例如 <canvas id="canvas" style="width: 100%; height: 100vh">。
Slint 在 WebGL 2 上使用 FemtoVG 进行渲染。
要使用软件渲染器,请在应用程序启动前设置 SLINT_BACKEND:
var Module = { preRun: [ () => { ENV.SLINT_BACKEND = 'emscripten-software'; }, ],};要把 FemtoVG 排除在构建之外,请使用 -DSLINT_FEATURE_RENDERER_FEMTOVG=OFF 进行配置。
Emscripten 后端目前有这些限制:
- 它只支持一个渲染到 canvas 中的窗口。
- Slint 解释器不可用。
- 尚不支持复制粘贴和输入法编辑器(IME)。
© 2026 SixtyFPS GmbH