Deno 在部署时如何解析 Rust 插件

How does Deno resolve Rust plugins when deployed

我无法理解用于创建 Deno + Rust 插件的部署模型。我的应用程序需要 Rust 中的某些性能元素,插件是完美的。我读过 https://alexandrempsantos.com/deno/creating-a-deno-plugin/ 等文章,其中解释了插件的开发。

我完全不清楚的是,如果 Deno 使用 ESM 来解析依赖项,那么当您添加 Rust 依赖项时会发生什么?我可以看到它发生在哪里,即 Deno.openPlugin('./rust-plugin/lib.rs'); 似乎可以。

在 CLI 上添加标志 -unstable --allow-plugin 也是必要的。

令人困惑的部分是它在部署或 运行 时如何解决该依赖关系。 Deno 是否使用原始 .rs 文件并在 运行 时间即时编译?

根据手册页 Foreign Function Interface (FFI) API,您无法加载 Rust 源文件。而是先将源文件编译成库文件(.dll/.dylib/.so),然后加载库文件。

此外,--allow-plugin 参数是遗留的,现在被 --allow-ffi 取代(例如 deno run --allow-ffi --unstable module.ts

不要复制手册页的内容,这里请参阅手册中的多个示例。