Expand description
libs/ 下各 JS IIFE 库的 wasm-bindgen 桥接层。
每个子模块对应一个 IIFE 产物(挂在 window 上的对象字面量):
共享纯数据类型两端编译,wasm-bindgen extern 与 EditorHandle/TerminalHandle
仅在 #[cfg(target_arch = "wasm32")] 子模块里编译(服务端构建无 window)。
使用约定(Leptos):
- 挂载点用
NodeRef取元素,create(&element, &opts)在该元素上创建实例; - 先用
library::use_browser_library(库名用library::BrowserLibrary)等待库脚本就绪, 再在Effect内构造 Options 并create; - Options 是普通 JS 对象:
Options::default()得到空对象,再用 setter 填充; window.__*页面函数只经globals调用(仅 wasm32),不手写字符串名;- 句柄(
EditorHandle/TerminalHandle)含 JS 引用,不是Send + Sync, 必须放进StoredValue::new_local/RwSignal::new_local;句柄Drop时销毁 JS 实例, 组件卸载时在on_cleanup里take出来丢弃即可; - 回调以 wasm-bindgen
Closure注入,随句柄同生共死。
Modules§
- codemirror
- CodeMirror SQL/代码编辑器桥接:extern 与 EditorHandle 在 #[cfg(wasm32)] 子模块里。
SQL 补全 schema DTO(SqlSchema/SqlTable)是 server function 返回值,
定义在
crate::models::sql_schema,不在本模块。 CodeMirror 编辑器的 wasm-bindgen 绑定层。 - library
- 浏览器库的按需加载与错误重试。 按组件需求加载浏览器库,资源完成后才允许构造 wasm-bindgen Options/实例。
- navigation
- 页面过渡与按历史记录保存的客户端状态。 浏览器导航协调器桥接;历史记录中的页面状态只保存在当前文档内存中。
- tiptap
- Tiptap 富文本编辑器桥接:共享类型(UploadsInFlight/UploadErrorEntry)两端都编译; wasm-bindgen extern 与 EditorHandle 在内部的 #[cfg(wasm32)] 子模块里。 Tiptap 编辑器的 wasm-bindgen 绑定层。
- xterm
- xterm.js 终端桥接:结构镜像 codemirror。 xterm.js 终端桥接:输出专用(无 stdin),配合 SSE 流式渲染容器 stdout/stderr。