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

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

本文关键字:文件 级联 访问 模块 js 索引 文件结构      更新时间:2023-09-26
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错误。因此,模块 2''index.js 未安装。

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

为此,

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

模块/索引.js

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

模块2/索引.js

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

Edit

我想ES7 await方法通过如下用途克服了这个问题;

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

原答案

问题是;Javascript代码是异步工作的。

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

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