[英]Import/Export name collision resolution
在 Node JS 中測試以下模塊布局,看起來本地導出的定義總是在名稱沖突的情況下替換外部導出的定義(參見 B.js 中的 f1)。
export const f1 = 'A'
export * from './A.js'
export const f1 = 'B'
import * as A from './A.js'
import * as B from './B.js'
console.log(A.f1)
console.log(B.f1)
> node C.js
// A
// B
這是規則嗎? 我還沒有在 Ecmascript 規范中找到有關如何管理此問題的信息。
進口/出口訂單重要嗎?
您認為這是擴展模塊重載功能和/或添加新功能的可靠方法嗎?
這是規則嗎? 我還沒有在 Ecmascript 規范中找到有關如何管理此問題的信息。
是的,本地出口優先。 事實上,這在規范中是標准化的:
具體來說,您的案例中的starExport
是以下內容的一部分:
For each ExportEntry Record e in module.[[StarExportEntries]], do
(...)
c. Let starNames be requestedModule.GetExportedNames(exportStarSet).
d. For each element n of starNames, do
i. If SameValue(n, "default") is false, then
1. If n is not an element of exportedNames, then
a. Append n to exportedNames.
所以,回答你的第二個問題:
您認為這是擴展模塊重載功能和/或添加新功能的可靠方法嗎?
是的,它是可靠的,因為它是在標准中指定的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.