7.2 导入导出模块

概念

  • import允许您包括和使用保存在其他地方、本地文件系统或远程保存的模块。
  • 导入是URL或文件系统路径。
  • export允许您指定导入模块的用户可以访问模块的哪些部分。

概览

默认情况下,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语句中。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概念 Deno使用URL进行依赖管理。 一种约定是将所有这些依赖的URL放入本地的dess.ts文件中。然后将功能...
    9e8aeff1c70c阅读 3,034评论 0 1
  • 在本章中,您可以找到一些示例程序,您可以使用它们来了解有关运行时的更多信息。 [https://deno.land...
    9e8aeff1c70c阅读 1,371评论 0 0
  • Deno的设计原则之一是没有神奇的解决方案。当tyescript对文件进行类型检查时,它只关心文件的类型,而TSC...
    9e8aeff1c70c阅读 3,663评论 0 1
  • 点击此链接阅读体验更好Es6中的模块默认导入导出及加载顺序 前言 在前面一Es6中的模块化Module,导入(im...
    itclanCoder阅读 9,073评论 0 0
  • ⚠️运行时编译器 API 不稳定(并且需要使用标志来启用它)。--unstable 运行时编译器 API 允许访问...
    9e8aeff1c70c阅读 2,463评论 0 1