⚡ 什么是 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🧪 实验性支持

📖 更多文档