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
)
不要复制手册页的内容,这里请参阅手册中的多个示例。
我无法理解用于创建 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
)
不要复制手册页的内容,这里请参阅手册中的多个示例。