我有三个文件: - 主要.js <- 依赖项:模块.js,助手.js - 模块.js <- 依赖项:助手.js - 助手.js <- 无依赖项
主.js和模块.js都是从帮助程序.js导入的;主.js都是从模块导入的.js
函数main.js 是从模块导入.js使用来自辅助程序的函数.js
当我运行 main.js:helper.js 会被导入两次,一次是 main.js一次是 module.js,还是 main.js 只导入一次 helper.js?
主.js:
import {someFunction} from "./helper.js";
import {someOtherFunction} from "./module.js";
someFunction();
someOtherFunction();
模块.js:
import {someFunction} from "./helper.js";
function someOtherFunction(){
// do something using someFunction();
someFunction();
};
export {someOtherFunction};
助手.js:
function someFunction(){
// do something
};
export {someFunction};
一个模块将始终加载一次。
ES 262规范在第413页指出:
[导入模块] 如果正常完成,则必须是幂等的。每次调用它时,都使用特定的 引用模块,说明符对作为参数,它必须返回相同的模块记录实例。
多个不同的引用模块,说明符对可以映射到同一个模块记录实例。实际映射 语义是实现定义的,但通常规范化过程作为映射的一部分应用于说明符 过程。典型的规范化过程将包括诸如字母大小写折叠和扩展 相对路径说明符和缩写路径说明符。