Deno 中如何使用 ES 模块?

阅读时长 5 分钟读完

近年来,前端领域中新的 JavaScript 运行环境 Deno 逐渐得到了越来越多的关注和青睐,它带来了种种原生支持的功能,其中之一就是支持 ES 模块。

本文主要介绍如何在 Deno 中使用 ES 模块,包括如何编写、导出和导入模块,并提供示例代码和详细解释。

编写 ES 模块

在 Deno 中,ES 模块可以以 .mjs 扩展名结尾,也可以省略扩展名,让 Deno 自动识别文件类型。

例如,我们新建一个文件 person.mjs,内容如下:

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

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

该模块导出一个默认的类 Person,它有两个属性 nameage,以及一个方法 getGreeting(),用于返回问候语。现在我们可以通过模块化的方式导入该模块了。

导入 ES 模块

在 Deno 中,我们可以使用 import 语句导入 ES 模块。与 Node.js 不同的是,在 Deno 中 import 语句不需要使用相对路径或绝对路径进行定位,而是支持 URL。

例如,我们可以新建一个文件 index.mjs,内容如下:

该模块导入了 person.mjs 模块,创建了一个名为 alice 的实例,然后调用了 getGreeting() 方法打印问候语。

需要注意的是,由于网络请求是异步的,因此需要在异步的 main() 函数中使用 await 关键字确保模块加载完毕。

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

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

----- ------

导出和导入具名的模块

ES 模块不仅支持默认导出,还支持其他类型的导出。

导出命名的模块

例如,在 person.mjs 模块中我们可以新建一个命名导出模块:

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

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

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

该模块新建了一个命名为 Person 的类,并将其导出。现在,我们需要使用命名导入语法来导入该类:

导出变量

除了导出类之外,我们还可以导出变量:

该模块将一个 person 对象导出,而非类。现在,我们可以使用命名导入语法来导入该变量:

总结

本文主要介绍了 Deno 中如何使用 ES 模块,包括模块的编写、导出和导入。其中,我们了解了 ES 模块和 CommonJS 模块之间的区别,并介绍了 Deno 中使用 URL 导入模块的语法。希望本文能够帮助大家更好地理解和使用 Deno 的 ES 模块功能。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65ba11f5add4f0e0ff29e0bf

纠错
反馈