⚡ 什么是 Neon?
Neon 是一个 Rust 库和工具链,用于将 Rust 嵌入到 Node.js 应用程序和库中。它让你可以用 Rust 编写安全、高性能的 Node.js 原生模块。
🎯 核心优势
- 内存安全:Rust 编译器保证内存安全,无 GC 暂停
- 极致性能:零成本抽象,性能接近 C/C++
- 简单工具链:无需构建脚本,只需 Node 和 Rust
- 易于并行:安全运行多线程,无数据竞争
- 类型安全:在 Rust 中使用 JavaScript 类型
📊 项目信息
GitHub Stars
8K+ 开发者关注
Rust 版本
1.65+ 稳定版
Node.js 支持
Node 10+
开源协议
MIT / Apache 2.0
🔄 代码对比
JavaScript vs Neon 实现:
JavaScript
// JavaScript 实现
const URL = "https://api.example.com/data";
async function fetchData() {
return (await fetch(URL)).json();
}
module.exports = fetchData;
rust (Neon)
// Neon (Rust) 实现
const URL: &str = "https://api.example.com/data";
#[neon::export]
async fn fetch_data() -> Result {
Ok(reqwest::get(URL).await?.json().await?)
}
🎯 适用场景
- CPU 密集型任务:图像处理、加密计算、数据解析
- 系统调用:文件系统、网络、进程管理
- 性能优化:热点代码用 Rust 重写
- 跨平台库:复用 Rust 生态
- 安全敏感:加密、认证、权限控制
🚀 快速体验
bash
# 创建新项目
npm init neon@latest my-project
# 进入项目目录
cd my-project
# 构建并测试
npm install
npm test
一个最简单的 Neon 模块:
rust
use neon::prelude::*;
fn hello(mut cx: FunctionContext) -> JsResult {
Ok(cx.string("Hello from Rust!"))
}
#[neon::main]
fn main(mut cx: ModuleContext) -> NeonResult<()> {
cx.export_function("hello", hello)?;
Ok(())
}
💻 平台支持
| 平台 | 支持状态 |
|---|---|
| Linux | ✅ 完全支持 |
| macOS | ✅ 完全支持 |
| Windows | ✅ 完全支持 |
| Bun | 🧪 实验性支持 |