use napi_derive::napi;
#[napi]
fn fibonacci(n: u32) -> u32 {
match n {
1 | 2 => 1,
_ => fibonacci(n - 1) + fibonacci(n - 2),
}
}与 CommonJS, esm 模块系统兼容, 自动生成 .d.ts 定义文件:
import { fibonacci } from './index.js'
// output: 5
console.log(fibonacci(5))const { fibonacci } = require('./index')
// output: 5
console.log(fibonacci(5))🚀 为 Node.js 应用带来原生性能
👷♂️ 由 Rust 编译器保障的内存安全
⚡️ 通过 Buffer 和 TypedArray 在 Rust 与 Node.js之间高效传输二进制数据,并可按需使用零拷贝视图
⚙️ 轻松并行代码
Node-API 的 ABI 兼容范围、构建 CLI 的 Node.js 要求,以及源码仓库当前持续测试的版本并不是同一件事。当前 CLI 构建建议使用 Node.js 22.13+ 或 24+;源码仓库的主要矩阵测试 Node.js 22、24 和 26。每个原生产物仍然只适用于其操作系统、CPU 和 libc 目标。
napi-rs 源码仓库当前 CI:
当前构建 CLI 建议使用 Node.js 22.13+ 或 24+。上游 CI 对 Bun 仅作尽力验证;Deno 不在阻塞式原生扩展矩阵中。
阅读完整支持约定 →| ia32 | x64 | arm64 | arm | WASI | |
|---|---|---|---|---|---|
| Windows MSVC | |||||
| macOS | |||||
| Linux glibc | |||||
| Linux musl | |||||
| FreeBSD | |||||
| Android | |||||
| WebAssembly |
请阅读支持与兼容性,了解 Node-API 等级、运行时、模板目标和 CI 覆盖范围之间的区别。