【发布时间】:2020-07-22 20:18:22
【问题描述】:
使用传统的 JavaScript 命名空间技术,我能够创建嵌套的逻辑分组,甚至可以跨越多个文件。我应该如何用 ES 模块别名导入替换它。
考虑我希望我的所有代码都在 CompanyName 命名空间中的情况,然后按产品分组,在一个产品中我可能有一组共享函数,这些函数可以按主题分组(在 Java、C# 等许多语言中很常见ETC。)。 F.e.
CompanyName = {
ProductName1: {
Shared: {
Database: {
enumerateDatabases: function() {
....
}
...
}
}
},
ProductName2: {
....
}
}
如果我理解正确,ES 模块允许我只使用一个别名来创建命名空间,f.e.
import * as CompanyName from ...
仅像 CompanyName 这样的别名肯定不够具体。像
这样的别名import * as CompanyNameProductName1SharedDatabase from...
几乎不可读,是一个简单的别名,例如
import * as Database from...
可能很快就会变得模棱两可,我将不得不使用像
这样的别名import * as MyDatabase from...
import * as YourDatabase from...
这是否意味着无法如上所示对代码进行分组?还是我应该同时使用这两种技术?
【问题讨论】:
-
只是好奇:在使用嵌套命名空间时,您是如何引用
enumerateDatabases函数的? -
在这种情况下看起来确实很难看:'let dbs = CompanyName.ProductName1.Shared.Database.enumerateDatabases()'。当然,我可以尽可能使用本地缩写,即使是命名空间的一部分。关键是,完整的命名空间在需要时可用!
标签: javascript ecmascript-6 es6-modules