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

时间:2016-05-03 06:32:01

标签: javascript node.js module directory-structure file-structure

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。

是否有机会使用component1定义访问component2modules

2 个答案:

答案 0 :(得分:0)

要实现这一目标,您必须在索引文件中执行以下操作。

模块/ index.js

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

模块/模块2 / index.js

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

答案 1 :(得分:0)

修改

我想ES7 等待 方法可以通过以下方式解决此问题;

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

原始答案

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

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

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