概念
概览
默认情况下,Deno使用ECMAScript 6的import/export标准来标准化在JavaScript和TypeScript中导入模块的方式。
它采用类似浏览器的模块解析,这意味着必须完整地指定文件名。您不能省略文件扩展名,也不会对index.js进行特殊处理。
import { add, multiply } from "./arithmetic.ts";
依赖项也是直接导入的,没有包管理开销。本地模块的导入方式与远程模块完全相同。如下面的示例所示,可以使用本地或远程模块以相同的方式生成相同的功能。
本地导入
在本例中,add函数和multiy函数是从本地的arithmetic.ts函数模块导入的。
Command: deno run local.ts
/**
* local.ts
*/
import { add, multiply } from "./arithmetic.ts";
function totalCost(outbound: number, inbound: number, tax: number): number {
return multiply(add(outbound, inbound), tax);
}
console.log(totalCost(19, 31, 1.2));
console.log(totalCost(45, 27, 1.15));
/**
* Output
*
* 60
* 82.8
*/
远程导入
在上面的本地导入示例中,从本地存储的算术模块导入了一个add方法和一个multiy方法。也可以通过从远程模块导入add方法和multiy方法来创建相同的功能。
在本例中,引用了Ramda模块,包括版本号。还要注意的是,JavaScript模块直接导入到TypeScript模块中,Deno在处理这方面没有问题。
Command: deno run ./remote.ts
/**
* remote.ts
*/
import {
add,
multiply,
} from "https://x.nest.land/ramda@0.27.0/source/index.js";
function totalCost(outbound: number, inbound: number, tax: number): number {
return multiply(add(outbound, inbound), tax);
}
console.log(totalCost(19, 31, 1.2));
console.log(totalCost(45, 27, 1.15));
/**
* Output
*
* 60
* 82.8
*/
导出
在上面的本地导入示例中,从本地存储的算术模块导入了两个add函数和两个multiy函数。要实现这一点,必须导出存储在算术模块中的函数。
要做到这一点,只需在函数签名的开头添加关键字export,如下所示。
/**
* arithmetic.ts
*/
export function add(a: number, b: number): number {
return a + b;
}
export function multiply(a: number, b: number): number {
return a * b;
}
所有需要在外部模块内部访问的函数、类、常量和变量都必须导出。可以在它们前面加上关键字“export`”,或者将它们包括在文件底部的EXPORT语句中。