Deno 自带的 Scripts Module 限制和如何克服

Deno 是一款由 Node.js 的创始人 Ryan Dahl 开发的基于 V8 引擎的 TypeScript 运行时。Deno 相较于 Node.js 具有更高的安全性、更智能的模块加载机制以及更强的跨平台支持。

Deno 可以直接运行支持 ES 模块的 JavaScript 代码,但是一些限制也导致我们在使用 Deno Scripts Module 时可能会遇到一些困难。

Scripts Module 限制

  1. 无法指定文件后缀名

在使用 import 导入模块时,Deno 不支持通过指定文件后缀名来导入模块。这意味着我们需要额外的工作来确保正确地导入模块。

  1. 无法自动解决依赖

Deno Scripts Module 不会自动解决依赖。在导入模块时,我们需要手动列出其所有依赖项。这使得在项目中使用较大的依赖包时更加困难,因为我们需要逐个列出每个依赖项。

  1. 无法从远程 URL 导入模块

Deno Scripts Module 无法从远程 URL 导入模块。该限制会阻碍我们从远程仓库导入第三方依赖项,例如 NPM,因为我们无法使用依赖项的 URL 导入它。

以上 3 种限制给我们的工作带来了很多麻烦,但是我们可以通过一些技巧来克服这些限制。

解决方案

  1. 手动指定文件后缀名

在 import 中手动指定文件后缀名是解决此问题的最好方法。例如,在代码中导入 example.ts

------ --------- ---- --------------

这样做可以确保正确导入模块,同时也保证了代码的可读性。

  1. 使用 import-map.json

Deno 允许我们使用 import-map.json 文件来存储模块的别名和路径。在 import-map.json 文件中,我们可以使用模块名称来代替路径,因此我们不必手动列出所有依赖项。

例如,以下是一个使用 import-map.json 文件的示例:

-
  ---------- -
    ---------- ----------------------
  -
-

在代码中导入 example.ts

------ --------- ---- ---------

这项技术使我们能够更简单地导入和管理项目中的依赖项。

  1. 使用第三方库

Deno Scripts Module 支持使用第三方库来解决问题。例如,我们可以使用第三方库 esm 来解决自动解决依赖问题。

这是一个使用 esm 的示例:

------ ----- ---- ------------------------------

----- --------- - ----- ----------------------------

esm 可以帮助我们以更智能更简单的方式加载模块。通过这种方式可以达到更好的效果。

结论

Deno Scripts Module 在某些方面受到了一些限制。但是通过上述的方法,我们可以使用优秀的解决方案来克服这些限制。希望本篇文章对读者有指导意义。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6718ea7fad1e889fe22ee3f1