Deno 是一个新兴的现代化 JavaScript 和 TypeScript 运行时,它使用 V8 引擎和 Rust 编写。它的目标是成为更安全、更简洁、更稳定的 Node.js 替代品。Deno 在管理依赖项和模块方面与 Node.js 有很大的不同。
关于 Deno
Deno(在中文中发音为 /ˈdiː.noʊ/)是一种基于 V8 引擎和 Rust 编写的运行时。它由 Node.js 创始人 Ryan Dahl 开发,并于 2018 年首次发布。
与 Node.js 不同,Deno 可以直接执行 TypeScript 文件,因为它内置了 TypeScript 编译器。而且,Deno 的安全性比 Node.js 更高,它通过沙箱技术隔离了文件系统和网络访问,因此不允许在默认情况下使用它们。如果需要访问这些资源,则需要使用 --allow-write
或 --allow-network
等选项。
Deno 的依赖项和模块管理与 Node.js 有很大的不同。在 Node.js 中,您可以使用 npm
或 yarn
管理依赖项,并使用 require()
函数导入模块。但是,在 Deno 中,您不能使用 npm
或 yarn
,而是需要在导入模块时指定其 URL。
假设我们需要使用 axios 库来请求 HTTP 资源。在 Node.js 中,我们可以使用以下命令安装依赖项:
--- ------- -----
然后在代码中导入它:
----- ----- - -----------------
在 Deno 中,我们不需要使用 npm
安装它。相反,我们可以在代码中使用以下语法导入它:
------ ----- ---- -----------------------------------
Deno 支持使用 HTTP 或 HTTPS 协议从远程获取模块,也可以从本地文件系统获取模块。
默认情况下,Deno 在每次执行脚本时都会重新下载模块。如果您希望缓存模块以避免重复下载,则可以使用 --lock
标志将依赖项存储在 lock.json
文件中。当下次执行脚本时,Deno 将尝试重新使用先前下载的依赖项。
Deno 还提供了一个公共模块仓库 deno.land/x
,它是一个社区驱动的模块生态系统。它允许您使用 URL 导入模块,而不必担心在本地文件系统中安装、管理、发布或升级它们。
示例代码
下面是一个演示如何使用 Axios 库请求 HTTP 资源的示例代码:
------ ----- ---- ----------------------------------- ----- ---------- - ----------------------------------------------- ---------------------------- -- - --------------------------- -------------- -- - ------------------- ---
在运行脚本之前,请确保您已安装 Deno 运行时。要运行脚本,请在终端中执行以下命令:
---- --- ----------- ---------
这将在默认情况下启用对网络访问的许可。如果您需要访问文件系统,则需要使用 --allow-write
标志,例如:
---- --- ----------- ------------- ---------
结论
Deno 是一个非常有前途的 JavaScript 和 TypeScript 运行时。虽然与 Node.js 相比,它仍处于相对较早的阶段,但它在安全性、依赖项和模块管理等方面具有很大的不同。Deno 使用沙箱技术隔离资源,并在导入模块时使用 URL。此外,它还提供了一个公共模块仓库 deno.land/x
,以便社区共享和管理模块。
虽然 Deno 有一些挑战,例如缺少某些 Node.js 依赖项和库,但随着它在 JavaScript 社区中的普及,我们可以期待更多的突破和发展。如果您想学习更多有关 Deno 的知识,请浏览官方文档以及社区网站和博客。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67206c0f2e7021665e0225b0