文件结构:使用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
定义访问 component1
和 component2
?
为此,您必须在整个索引文件中执行以下操作。
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 语言构建的平台上工作时。
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
定义访问 component1
和 component2
?
为此,您必须在整个索引文件中执行以下操作。
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 语言构建的平台上工作时。