7.13 模块元数据

概念

  • import.meta可以提供有关模块上下文的信息。
  • 布尔值import.meta.main将告诉您当前模块是否是程序入口点。
  • 字符串import.meta.url将提供当前模块的URL。
  • 字符串Deno.mainModule将给出主模块入口点的URL,即由Deno运行时调用的模块。

例子

下面的示例使用两个模块来显示import.meta.url、import.meta.main和Deno.mainModule之间的区别。在本例中,module_a.ts是主模块入口点:

/**
 * module_b.ts
 */
export function outputB() {
  console.log("Module B's import.meta.url", import.meta.url);
  console.log("Module B's mainModule url", Deno.mainModule);
  console.log(
    "Is module B the main module via import.meta.main?",
    import.meta.main,
  );
}
/**
 * module_a.ts
 */
import { outputB } from "./module_b.ts";

function outputA() {
  console.log("Module A's import.meta.url", import.meta.url);
  console.log("Module A's mainModule url", Deno.mainModule);
  console.log(
    "Is module A the main module via import.meta.main?",
    import.meta.main,
  );
}

outputA();
console.log("");
outputB();

如果module_a.ts位于/home/alice/deno中,则deno run--allow-read module_a.ts的输出为:

Module A's import.meta.url file:///home/alice/deno/module_a.ts
Module A's mainModule url file:///home/alice/deno/module_a.ts
Is module A the main module via import.meta.main? true

Module B's import.meta.url file:///home/alice/deno/module_b.ts
Module B's mainModule url file:///home/alice/deno/module_a.ts
Is module B the main module via import.meta.main? false
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容