什么是ES6中的子模块?
假设我有一个名为a.js
的ES6模块。 a.js
模块导入b.js
和c.js
模块。 同样, b.js
导入d.js
和c.js
导入e.js
现在我想知道哪些是子模块和超级模块。
我觉得b.js
和c.js
是c.js
的子模块。 但我不确定。 真的很困惑。 请帮忙。
提前致谢。
ES6中没有子模块的概念。 只有模块的概念。 模块是程序中一个单元的抽象,ES6引入了新的语法 。
子模块是其他模块包含的模块的方便名称。 这里重要的是由关系决定的子模块包含而不是通过关系import 。 在ES6子模块中用作抽象概念。
在ES6中,一个文件就是一个模块。 那么让我们回顾一下下面的项目结构:
myapp/ ├── index.es6 └── lib ├── index.es6 ├── backend.es6 └── validator.es6
在这里你可以说, myapp
是根模块 。 它包含一个子模块 : lib
。 模块myapp
在文件index.es6
定义。 myapp
模块的子模块lib
(或者只是模块myapp/lib
)包含两个子模块 : backend
和validator
。
在ES6模块上下文中,所有的模块都是相同的,这意味着您可以通过创build合适的文件夹结构将它们分组到您的项目中。 就像是:
src/app.js src/specificModule/specificModuleA.js src/common/commonModuleB.js src/common/commonMofuleC.js ...
这就是说,如果您开发使用一些构build工具,在这种情况下我正在考虑Webpack ,它可以自动提取常用的function到您的公共模块 。 它通过分析源文件的依赖关系树来实现。
但是Webpack是相当复杂的工具,所以现在只需要在合适的文件夹结构中构build项目源就足够了。