Spec-Zone.ru › Deno 2

Метаданные модуля

Концепции

  • import.meta может предоставить информацию о контексте модуля.
  • Булево значение import.meta.main укажет, является ли текущий модуль точкой входа программы.
  • Строковое значение import.meta.url предоставит URL текущего модуля.
  • Строковое значение import.meta.filename предоставит полное разрешённое расположение текущего модуля. Только для локальных модулей.
  • Строковое значение import.meta.dirname предоставит полное разрешённое расположение директории, содержащей текущий модуль. Только для локальных модулей.
  • import.meta.resolve позволяет разрешить спецификатор относительно текущего модуля. Эта функция учитывает карту импортов (если она была предоставлена при запуске).
  • Строковое значение 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,
  );
  console.log(
    "Resolved specifier for ./module_b.ts",
    import.meta.resolve("./module_b.ts"),
  );
}

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
Resolved specifier for ./module_b.ts file:///home/alice/deno/module_b.ts

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

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/tutorials/module_metadata

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API