本文档全面概述了 AFFiNE 中的原生功能,重点关注使用 Rust 实现并与 JavaScript/TypeScript 接口的组件。这些原生模块负责处理性能关键型操作、平台特定功能以及仅靠 JavaScript 难以实现或无法实现 的底层系统访问。
有关特定 NBStore 实现的详细信息,请参阅 原生模块集成。
AFFiNE 使用 Rust 编写的原生模块来提供跨不同平台的性能关键型功能。这些模块通过 NAPI-RS 生成的绑定与 JavaScript/TypeScript 代码库集成。
来源
AFFiNE 中的原生功能被组织成几个 Rust crate,这些 crate 被暴露给应用程序的不同部分。
来源
原生模块为多个平台构建,并进行了有针对性的优化。
| 模块 | Windows | macOS | Linux | Android | iOS |
|---|---|---|---|---|---|
| affine_native | x64, ARM64 | x64, ARM64 | x64, ARM64 | - | - |
| affine_server_native | x64, ARM64 | x64, ARM64 | x64, ARM64 | - | - |
| affine_mobile_native | - | - | - | ARM64 | 进行中 |
来源
其中一项核心原生功能是媒体捕获系统,该系统提供具有平台特定优化的音频和屏幕录制功能。
媒体捕获系统可以录制特定应用程序的音频,或合并多个音频源。
来源
NBStore 是一个原生存储系统,提供高效的文档管理功能。
NBStore 提供以下关键功能:
来源
原生模块通过 NAPI-RS 生成的绑定与 JavaScript 集成,该工具为 Rust 代码创建了习惯性的 JavaScript 接口。
原生模块使用复杂的加载机制来检测当前平台并加载适当的原生二进制文件。
来源
移动平台有专门的原生实现。
对于 Android,原生代码集成使用了:
来源
服务器还利用原生代码来处理性能关键型操作。
来源
原生代码模块使用复杂的构建系统来确保跨平台的兼容性。
来源
名为 affine_common 的包提供了多个原生模块使用的共享实用程序。
来源
这些原生功能使得 AFFiNE 能够提供仅靠 JavaScript 难以实现的、高性能的功能,同时与其余的 JavaScript/TypeScript 代码库保持无缝集成。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(1ae36d)