在 Deno 中,使用第三方库可以极大地增加我们项目的生产力和代码质量。但是,与 Node.js 不同,Deno 不支持 npm 这样的包管理器。那么,我们应该如何使用第三方库呢?
使用 URL 导入模块
Deno 支持使用 URL 导入模块(也称为 ES 模块),类似于前端的使用方式。我们可以在代码中使用 import
关键字,指定第三方模块的 URL。例如,我们想使用第三方库 https://deno.land/std/http/server.ts
中的 serve
函数:
import { serve } from "https://deno.land/std/http/server.ts"; const s = serve({ port: 8000 }); console.log("http://localhost:8000/"); for await (const req of s) { req.respond({ body: "Hello Deno\n" }); }
在这个示例中,我们通过 import
导入第三方库中的 serve
函数,并成功启动一个 HTTP 服务。
缓存和检查
默认情况下,Deno 会在第一次运行时缓存所有导入的模块。当我们再次运行这段代码时,Deno 会使用缓存中的版本,而不会再次下载。如果您希望强制下载和重新编译模块,可以使用以下命令:
$ deno run --reload file.ts
此外,您也可以使用以下命令检查导入的模块是否有变化:
$ deno run --lock=lock.json file.ts
该命令会检查导入的模块是否与锁定文件中的版本相同,如果不同,则会提示更新锁定文件。
使用本地文件系统
除了从 URL 导入模块外,我们还可以使用本地文件系统中的文件。例如,我们可以将 serve
函数保存为本地文件 server.ts
,然后从 main.ts
中导入:
import { serve } from "./server.ts"; const s = serve({ port: 8000 }); console.log("http://localhost:8000/"); for await (const req of s) { req.respond({ body: "Hello Deno\n" }); }
需要注意的是,如果您的代码中导入了本地文件系统中的文件,Deno 需要通过设置权限来启用文件访问。可以通过以下命令来运行程序:
$ deno run --allow-net --allow-read file.ts
在本例中,我们通过 --allow-read
参数允许程序访问本地文件系统。如果您的代码中还涉及到网络访问,也需要设置 --allow-net
参数。
使用 TypeScript 定义文件
由于 Deno 是一个使用 TypeScript 编写的运行时,因此它天然支持使用 TypeScript 定义文件(.d.ts)来描述第三方库中的类型和接口。这样做不仅可以提高代码的可读性,还可以增强编辑器的智能提示和自动完成功能。
例如,如果您使用 https://deno.land/std/http/server.ts
中的 serve
函数,则可以从 https://deno.land/std/http/server.d.ts
中导入类型定义:
-- -------------------- ---- ------- ------ - ------------- - ---- --------------------------------------- ------ ----- -------- ----------- ------ - - ----- ------ --- ------------- - ----- - - ---------------- --- ----- ------ --- -- -- - ----- ------------- - - ----- -------- ------------ -------------- - ----- -
在这个示例中,我们从 server.d.ts
中导入了 ServerRequest
类型,以便在 handler
函数中使用。
总结
通过上述介绍,您应该已经掌握了在 Deno 中如何使用第三方库的方法。总的来说,Deno 拥有一个简单、直接的导入系统,能够与浏览器的现代标准愉快地玩耍。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64604efb968c7c53b0207ae3