文件结构:使用index.js文件级联访问子模块或子文件

File structure: Cascade accessing sub-modules or sub-files by using index.js file

modules/
   |
   |--- index.js
   |
   |--- module1.js
   |
   └--- module2/
           |
           |--- index.js
           |
           |--- component1.js
           |
           └--- component2.js

使用上面的结构,我可以使用下面的代码访问module1.js

var modules = require('./modules') // or import modules from './modules'
console.log(modules.module1) 

但是我无法通过以下代码访问 component1

var modules = require('./modules') // or import modules from './modules'
console.log(modules.module2.component1)

尝试代码时,系统抛出Cannot read property 'component1' of undefined错误。所以,module2\index.js 没有安装。

是否有机会通过使用 modules 定义访问 component1component2

为此,您必须在整个索引文件中执行以下操作。

modules/index.js

module.exports = {
    module1: require('./module1'),
    module2: require('./module2')
}

modules/module2/index.js

module.exports = {
    component1: require('./component1'),
    component2: require('./component2')
}

编辑

我猜 ES7 await 方法通过如下使用解决了这个问题;

var modules = await require('./modules')
console.log(modules.module2.component1)

原回答

问题在于; Javascript 代码异步工作。

在第一级定义变量时不是问题。但是在第二层需要一些时间从深度获取和加载模块。

等待加载模块然后定义组件是无稽之谈,尤其是在另一个 Javascript 平台(如 React-Native)或其他基于 Javascript 语言构建的平台上工作时。