将 Node.js 作为嵌入式引擎集成到 Rust 宿主
使用 napi-rs 将 Node.js 运行时嵌入 Rust 二进制,并通过 FFI 暴露宿主函数与 JavaScript 双向调用。 · 难度:入门 · +10XP
将 Node.js 作为嵌入式引擎集成到 Rust 宿主
本教程并非运行 Node.js CLI,而是将 V8/Node.js 运行时编译为静态库,通过 napi-rs 链接到 Rust 项目。你将学习如何初始化 node::Environment、创建独立的 V8 Isolate、以及通过 napi_value 传递复杂类型。实现 Rust 宿主调用 JavaScript 模块,同时 JavaScript 调用 Rust 函数(如文件系统操作),最终构建一个单二进制文件的可嵌入 Node.js 环境。
// Rust 端初始化 Node.js 环境
use napi::bindgen_prelude::*;
#[napi]
fn start_node_script(code: String) -> Result {
let env = NodeEnv::new()?;
let result = env.eval_script(&code)?;
Ok(result.as_string()?)
}
// JavaScript 调用 Rust 函数
const native = require('./native.node');
native.startNodeScript('console.log("Hello from Rust!")');