Deno 是一个现代化的 JavaScript 和 TypeScript 运行时环境,使用它可以在浏览器之外运行 JavaScript 以及 TypeScript 应用程序。与 Node.js 不同的是,Deno 不使用 npm 来管理依赖项,而是使用类似浏览器的方式将其放在 JavaScript 文件中。
在 Deno 中,在导入模块时,可以使用 URL 来定位模块的位置,这些 URL 必须指向远程服务器或文件系统目录之一。Deno 内置了一个名为 deno.land/std
的模块,其中包含了许多有用的模块用来处理各种任务,例如处理文件系统和网络请求。
但是,当你使用 Deno 开发应用程序时,你可能会遇到需要依赖于其他第三方库的情况。在本文中,我们将探讨如何在 Deno 模块中查找依赖项。
Deno 引入第三方库的几种方式
当 Deno 开发者想引入第三方库时,有几种可行的方法:
1. 直接导入本地文件
这是最简单的方式,如果你已经将第三方库下载下来,并放在某个文件夹下,你可以像导入本地模块一样 import
导入。例如:
import { hello } from '../myLibrary/hello.ts'
然后就可以正常使用 hello
模块了。
2. 导入 URL
如果你在 Web 上找到了某个给定的 URL,你也可以将其导入到你的应用程序中。例如:
import { someFunction } from "https://cdn.skypack.dev/moment";
然后就可以像使用本地模块一样使用 someFunction
模块了。
3. 使用 Deno CLI
Deno CLI 提供了一种使用 deno cache
命令缓存本地依赖项的方法,例如:
deno cache --reload https://deno.land/std/http/server.ts
运行此命令将会下载或更新 https://deno.land/std/http/server.ts
,并将其缓存到本地机器上,这意味着在之后的运行时可以快速访问该模块。
4. 使用 Deno.land/x
与 npm 一样,Deno.land/x 是一个 Deno 代码库的集合,允许开发者使用命令行安装和更新第三方库。例如:
import { serve } from "https://deno.land/x/http/mod.ts";
这将导入 Deno.land/x 代码库中的 http
模块。
使用 require 对象和 HTML 规范
Deno 还支持以下功能:
require 对象
Deno 中也提供了类似 Node.js 中的 require
对象。它可以对文件和文件夹进行导入,例如:
const foo = require("/path/to/foo.js"); console.log(foo);
HTML 规范
Deno 还支持 HTML 规范中的 <script type="module">
标签,例如:
<!-- index.html --> <html> <head> <script type="module" src="./app.ts"></script> </head> <body></body> </html>
使用 import_map.json
Deno 还提供了一种用于声明从哪个 URL 加载模块的文件的方式,称为 import_map.json
。这个 JSON 对象列出了模块名称的别名以及指向实际模块 URL 的映射。
例如,下面的 import_map.json
映射了模块名 vue
到其实际 URL:
{ "imports": { "vue": "https://cdn.jsdelivr.net/npm/vue@3.0.11/dist/vue.esm-browser.js" } }
然后,我们可以像这样导入模块:
import { createApp } from "vue";
运行时,Deno 将查找并下载 https://cdn.jsdelivr.net/npm/vue@3.0.11/dist/vue.esm-browser.js
,然后将其添加到应用程序中。
总结
本文介绍了在 Deno 模块中查找依赖项的几种方法,其中包括直接导入本地文件、导入 URL、使用 Deno CLI、使用 Deno.land/x、require 对象和 HTML 规范,以及使用 import_map.json
。这些方法使得开发者能够根据自己的需要编写便捷的应用程序,并为其添加所需的依赖项。
希望本篇文章能够帮助您更好地掌握在 Deno 中查找和管理依赖项的技巧。下面是一个示例代码,它演示了如何使用上述技术进行导入。
-- -------------------- ---- ------- -- ------ ------ - ----- - ---- ----------------------- -- --- -- ------ - ------------ - ---- --------------------------------- -- -- ---- --- ---- ----- -------- ------------------------------------ -- -- ----------- ------ - ----- - ---- ---------------------------------- -- ------- -- ----- --- - --------------------------- -- ---- -- ------ ------ ------- ------------- ------------------------ ------- ------------- ------- -- --------------- - ---------- - ------ ----------------------------------------------------------------- - -
祝你在 Deno 的开发中愉快!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6494c12f48841e989421cf3d