module.link(linker)
linker<Function>-
specifier<string> 请求模块的说明符:import foo from 'foo'; // ^^^^^ the module specifier -
referencingModule<vm.Module>Module对象link()被调用。 -
extra<Object>assert<Object>断言中的数据:
根据 ECMA-262,主机应该忽略它们不支持的断言,而不是,例如,如果存在不受支持的断言,则会触发错误。import foo from 'foo' assert { name: 'value' }; // ^^^^^^^^^^^^^^^^^ the assertion
-
返回: <vm.Module> | <Promise>
-
- 返回: <Promise>
链接模块依赖项。此方法必须在评估之前调用,并且每个模块只能调用一次。
该函数应返回 Module 对象或最终解析为 Module 对象的 Promise。返回的Module 必须满足以下两个不变量:
- 它必须与父级
Module属于相同的上下文。 - 它的
status不能是'errored'。
如果返回的 Module 的 status 是 'unlinked' ,则将在返回的 Module 上使用提供的相同 linker 函数递归调用此方法。
link() 返回一个 Promise ,当所有链接实例解析为有效的 Module 时,该 Promise 将被解析,或者如果链接器函数抛出异常或返回无效的 Module 则被拒绝。
链接器函数大致对应于 ECMAScript 规范中实现定义的HostResolveImportedModule 抽象操作,有几个关键区别:
- 当HostResolveImportedModule 是同步的时,链接器函数可以是异步的。
在模块链接期间使用的实际HostResolveImportedModule 实现是返回链接期间链接的模块的实现。由于此时所有模块都已完全链接,因此 HostResolveImportedModule 实现按照规范是完全同步的。
对应于 ECMAScript 规范中 Cyclic Module Record 的 Link() concrete method 字段。
相关用法
- Node.js vm.Module用法及代码示例
- Node.js vm.SyntheticModule.setExport(name, value)用法及代码示例
- Node.js vm.SourceTextModule.createCachedData()用法及代码示例
- Node.js vm.createContext([contextObject[, options]])用法及代码示例
- Node.js vm.runInThisContext(code[, options])用法及代码示例
- Node.js vm.isContext()用法及代码示例
- Node.js vm.measureMemory([options])用法及代码示例
- Node.js vm.runInNewContext()用法及代码示例
- Node.js vm.SyntheticModule用法及代码示例
- Node.js vm.runInNewContext(code[, contextObject[, options]])用法及代码示例
- Node.js vm.createContext()用法及代码示例
- Node.js vm.Script.createCachedData()用法及代码示例
- Node.js vm.runInThisContext()用法及代码示例
- Node.js vm.Script.runInNewContext([contextObject[, options]])用法及代码示例
- Node.js vm.runInContext()用法及代码示例
- Node.js vm.Script.runInThisContext([options])用法及代码示例
- Node.js vm.runInContext(code, contextifiedObject[, options])用法及代码示例
- Node.js vm.Script.runInContext(contextifiedObject[, options])用法及代码示例
- Node.js v8.getHeapSpaceStatistics()用法及代码示例
- Node.js v8.deserializer.readRawBytes()用法及代码示例
- Node.js v8.deserializer.readUint32()用法及代码示例
- Node.js v8.serializer.writeRawBytes()用法及代码示例
- Node.js v8.writeHeapSnapshot([filename])用法及代码示例
- Node.js v8.Deserializer.readUint32()用法及代码示例
- Node.js v8.getHeapCodeStatistics()用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 vm.Module.link(linker)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
