在 Web 应用程序开发中,前端技术一直是比较热门的领域。而某种程度上讲,Deno 可以看作是 Node.js 的替代品。而在 Deno 中,插件是一种常见的扩展机制。本文将详细介绍如何在 Deno 中开发和使用插件,旨在帮助读者快速了解插件的开发和使用方式。
什么是插件
插件是一种用于扩展 Deno 原生功能的机制。Deno 插件通常由 Rust 语言编写,这是因为 Rust 语言具有较高的执行效率和安全性。插件能够让开发者使用第三方的 Rust 库和工具,从而不需要重新实现一些核心库。这些插件可以被其它 Deno 应用程序所共享,大大提高了代码重用和可维护性。
开发插件
开发 Deno 插件通常需要以下步骤:
编写 Rust 代码:由于 Deno 插件一般是用 Rust 编写的,因此可根据 Rust 工具链来创建自己的插件。首先需要安装 Rust 工具链。可以使用
rustup
作为 Rust 工具链的安装器,同时也可以用它管理各个 Rust 版本。安装 Rust 的最简单方法是通过rustup-init
安装程序。创建插件项目:创建一个简单的 Rust 包,并将其配置成一个可以在 Deno 中使用的插件。尝试在 Cargo.toml 的
build-dependencies
区域中添加deno_core = "^0.100.0"
。[lib] crate-type = ["cdylib"] [dependencies] thiserror = "1.0" [build-dependencies] deno_core = "^0.100.0"
添加 Deno API:我们需要在 Rust 项目中添加
Deno
核心 API,以允许我们在插件中访问 Deno 运行时系统。在 main.rs 文件开头添加如下内容:-- -------------------- ---- ------- --- ---------------------------------- ---- --- ----------------------- ------------ ------------ --- -- --------------------------- ---- --- ---------- - ------------------------------ ---------- - -- -------------------- ---- --- ---------- ------ ------ ----------- -------------------------------- -- ------------------------------ -------------------- - --- ------- - ------- -------- --- -------- - ----------------------------------------- --- --- - ----------------------------------------------------- ------------------------------------ -
展开代码这个简单的示例创建了一个
hello
操作,当 Deno 发布它时,它将返回固定的字符串“Hello, World!”。编译插件:使用 Rust 编译器,将 Rust 项目编译成一个共享库,可以通过以下命令完成:
$ cargo build --release --target x86_64-unknown-linux-gnu
上述命令会在 Deno 目录中生成一个动态链接库文件,如
target/release/libhello.so
。
使用插件
在 Deno 中使用插件可以分为以下步骤:
导入插件:我们可以将插件文件导入 Deno 运行时系统,从而方便地调用其中的函数。可以使用
Deno.openPlugin()
方法打开一个插件文件,如下:const plugin = Deno.openPlugin("./libhello.so");
调用插件函数:调用插件函数也是很简单的。可以使用
Deno.core.dispatch()
方法调用插件的操作,如下:const { Ops } = Deno.core; const response = await Ops.dispatch("hello", new Uint8Array([])); const message = new TextDecoder().decode(response); console.log(message); // Hello, World!
上述代码中,“hello”是插件操作的名称。执行该操作不需要任何参数,因此使用空的
Uint8Array
作为操作的参数。最后,操作返回的内容被解码为字符串并打印到控制台。
总结
本文介绍了如何在 Deno 中开发和使用插件,从而扩展 Deno 的功能。我们了解了插件是什么,如何开发插件,以及如何在 Deno 运行时系统中使用插件。如果您对插件的开发和使用感兴趣,推荐尝试开发一些简单的插件,并测试它们在 Deno 中的工作方式。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e4670ef6b2d6eab3fd0e8f