近年来,前端领域中新的 JavaScript 运行环境 Deno 逐渐得到了越来越多的关注和青睐,它带来了种种原生支持的功能,其中之一就是支持 ES 模块。
本文主要介绍如何在 Deno 中使用 ES 模块,包括如何编写、导出和导入模块,并提供示例代码和详细解释。
编写 ES 模块
在 Deno 中,ES 模块可以以 .mjs
扩展名结尾,也可以省略扩展名,让 Deno 自动识别文件类型。
例如,我们新建一个文件 person.mjs
,内容如下:
-- -------------------- ---- ------- ------ ------- ----- ------ - ----------------- ---- - --------- - ---- -------- - --- - ------------- - ------ ------- -- ---- -- ------------- --- - -- ----------- ----- ----- - -
该模块导出一个默认的类 Person
,它有两个属性 name
和 age
,以及一个方法 getGreeting()
,用于返回问候语。现在我们可以通过模块化的方式导入该模块了。
导入 ES 模块
在 Deno 中,我们可以使用 import
语句导入 ES 模块。与 Node.js 不同的是,在 Deno 中 import
语句不需要使用相对路径或绝对路径进行定位,而是支持 URL。
例如,我们可以新建一个文件 index.mjs
,内容如下:
import Person from 'https://example.com/person.mjs' const alice = new Person('Alice', 25) console.log(alice.getGreeting()) // Hello, my name is Alice, and I am 25 years old.
该模块导入了 person.mjs
模块,创建了一个名为 alice
的实例,然后调用了 getGreeting()
方法打印问候语。
需要注意的是,由于网络请求是异步的,因此需要在异步的 main()
函数中使用 await
关键字确保模块加载完毕。
-- -------------------- ---- ------- -- --------- ------ ------ ---- -------------------------------- ----- -------- ------ - ----- ----- - --- --------------- --- -------------------------------- -- ------ -- ---- -- ------ --- - -- -- ----- ---- - ----- ------
导出和导入具名的模块
ES 模块不仅支持默认导出,还支持其他类型的导出。
导出命名的模块
例如,在 person.mjs
模块中我们可以新建一个命名导出模块:
-- -------------------- ---- ------- -- ---------- ------ ----- ------ - ----------------- ---- - --------- - ---- -------- - --- - ------------- - ------ ------- -- ---- -- ------------- --- - -- ----------- ----- ----- - -------------- - ------ -------- - --- - -
该模块新建了一个命名为 Person
的类,并将其导出。现在,我们需要使用命名导入语法来导入该类:
// index.mjs import { Person } from 'https://example.com/person.mjs' const alice = new Person('Alice', 25) console.log(alice.getGreeting()) // Hello, my name is Alice, and I am 25 years old.
导出变量
除了导出类之外,我们还可以导出变量:
// person.mjs export const person = { name: 'Alice', age: 25, getGreeting() { return `Hello, my name is ${this.name}, and I am ${this.age} years old.` } }
该模块将一个 person
对象导出,而非类。现在,我们可以使用命名导入语法来导入该变量:
// index.mjs import { person } from 'https://example.com/person.mjs' console.log(person.getGreeting()) // Hello, my name is Alice, and I am 25 years old.
总结
本文主要介绍了 Deno 中如何使用 ES 模块,包括模块的编写、导出和导入。其中,我们了解了 ES 模块和 CommonJS 模块之间的区别,并介绍了 Deno 中使用 URL 导入模块的语法。希望本文能够帮助大家更好地理解和使用 Deno 的 ES 模块功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65ba11f5add4f0e0ff29e0bf