导入和导出模块

默认情况下,Deno标准化了在 JavaScript 和 TypeScript 中导入模块的方式。

它遵循 ECMAScript 6 import/export 标准,但有一个警告,文件类型(后缀名)必须包含在 import 语句的末尾。

  1. import {
  2. add,
  3. multiply,
  4. } from "./arithmetic.ts";

依赖项也直接导入,没有包管理开销。本地模块的导入方式与远程模块完全相同。

如下面的示例所示,可以使用本地或远程模块以相同的方式产生相同的功能。

本地导入

在这个例子中,addmultiply 函数是从本地的 arithmetic.ts 模块导入的。

命令: deno run local.ts

  1. import { add, multiply } from "./arithmetic.ts";
  2. function totalCost(outbound: number, inbound: number, tax: number): number {
  3. return multiply(add(outbound, inbound), tax);
  4. }
  5. console.log(totalCost(19, 31, 1.2));
  6. console.log(totalCost(45, 27, 1.15));
  7. /**
  8. * 输出:
  9. *
  10. * 60
  11. * 82.8
  12. */

导出

在上面的示例中,addmultiply 函数是从本地存储的算术模块导入的。为此,必须导出存储在运算模块中的功能。

只需将关键字 export 添加到函数签名的开头,如下所示。

  1. export function add(a: number, b: number): number {
  2. return a + b;
  3. }
  4. export function multiply(a: number, b: number): number {
  5. return a * b;
  6. }

需要在外部模块中访问的所有函数、类、常量和变量都必须导出。可以在它们的前面加上 export 关键字,也可以将它们包括在文件底部的 export 语句中。

要了解有关 ECMAScript 导出功能的更多信息,请阅读 MDN 文档.

远程导入

在上面的本地导入示例中,从本地存储的算术模块中导入了 addmultiply 方法。 也可以通过从远程模块导入 addmultiply 方法来实现相同的功能。

在这种情况下,可以导入 Ramda 模块,包括版本号。Deno 可以处理 JavaScript 模块直接导入到 TypeSript 模块的情况。

命令: deno run ./remote.ts

  1. import {
  2. add,
  3. multiply,
  4. } from "https://x.nest.land/ramda@0.27.0/source/index.js";
  5. function totalCost(outbound: number, inbound: number, tax: number): number {
  6. return multiply(add(outbound, inbound), tax);
  7. }
  8. console.log(totalCost(19, 31, 1.2));
  9. console.log(totalCost(45, 27, 1.15));
  10. /**
  11. * 输出:
  12. *
  13. * 60
  14. * 82.8
  15. */