Deno 是一个新型的 JavaScript 和 TypeScript 运行时,与 Node.js 不同,它没有 NPM 构建生态系统,也不支持 CommonJS 模块规范,而是采用了 ES 模块规范。因此,如何在 Deno 中进行模块化开发,是我们需要掌握的重点之一。
ES 模块规范
ES 模块规范是 ECMAScript 6 中新增的模块化规范,通过 import 和 export 关键字实现模块化。ES 模块规范具有以下特点:
- 采用静态引入方法,可以在编译期间分析出所需要的模块依赖。
- 可以导出任何类型的值(变量、函数、类、对象等)。
- 导入和导出可以在代码中的任何位置进行。
在 Deno 中使用 ES 模块规范
由于 Deno 默认支持 ES 模块规范,因此我们可以直接使用 import 和 export 关键字进行模块化开发。下面我们通过一个简单的示例,来演示如何在 Deno 中使用 ES 模块规范。
- 首先创建一个
myModule.ts
文件,并在其中导出一个函数:
// myModule.ts export function sayHi(name: string) { console.log(`Hi, ${name}!`); }
- 然后在另一个文件中导入并调用此函数:
// main.ts import { sayHi } from "./myModule.ts"; sayHi("Deno"); // 输出:Hi, Deno!
上面的示例中,我们在 myModule.ts
文件中通过 export 关键字导出了一个名为 sayHi
的函数,然后在 main.ts
文件中使用 import 关键字导入并调用了此函数。
需要注意的是,在使用 import 和 export 关键字时,我们需要在文件名的扩展名前加上 .ts
或 .js
,表示使用的是 TypeScript 或 JavaScript 语言。如果不指定扩展名,Deno 会默认按照 TypeScript 进行处理。
CommonJS 模块规范
除了 ES 模块规范外,Deno 还支持 CommonJS 模块规范,通过 require 和 module.exports 关键字实现模块化。需要注意的是,Deno 仅支持 CommonJS 模块规范的部分语法,不能支持所有 Node.js 的 CommonJS 模块规范。
下面我们通过一个简单的示例,来演示如何在 Deno 中使用 CommonJS 模块规范。
- 首先创建一个
myModule.js
文件,并在其中导出一个函数:
// myModule.js module.exports.sayHi = function(name) { console.log(`Hi, ${name}!`); };
- 然后在另一个文件中导入并调用此函数:
// main.js const { sayHi } = require("./myModule.js"); sayHi("Deno"); //输出:Hi, Deno!
上面的示例中,我们在 myModule.js
文件中通过 module.exports 导出了一个名为 sayHi
的函数,然后在 main.js
文件中使用 require 关键字导入并调用了此函数。
需要注意的是,在使用 require 关键字时,我们需要在文件名的扩展名前加上 .js
,表示使用的是 JavaScript 语言。如果不指定扩展名,Deno 会默认按照 TypeScript 进行处理。
总结
本文介绍了在 Deno 中进行模块化开发的两种方式:ES 模块规范和 CommonJS 模块规范。ES 模块规范采用静态引入方法,可以在编译期间分析出所需要的模块依赖;而 CommonJS 模块规范则是 Node.js 中较为常见的模块化规范。了解并掌握这两种模块化规范,能够帮助我们更好地进行代码管理和组织。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64774a07968c7c53b03d010f