在下面的node.js中解决此类问题的更好方法是什么?
import foo from "../../../modules/home/models/index.js"
import bar from "../../../modules/about/models/index.js"
import baz from "../../../modules/contact/models/index.js"
至少让它们成为这样的东西?
import foo from "/home/models/index.js"
import bar from "/about/models/index.js"
import baz from "/contact/models/index.js"
有什么想法吗?
答案 0 :(得分:3)
你需要反转控制。
./模块/家/ index.js
const homeModel1 = () => {
//...
}
const homeModel2 = () => {
//...
}
module.exports = Object.assign({}, { homeModel1, homeModel2 })
1。将导出以下形状的对象:
{
homeModel1: () => {},
homeModel2: () => {}
}
2。添加新模型时,只需添加它或将其导入此文件,然后将其添加到导出对象。
./模块/ index.js
import { homeModels } from './modules/home'
import { aboutModels } from './modules/about'
import { contactModels } from './modules/contact'
module.exports = Object.assign({}, { homeModels, aboutModels, contactModels })
其他地方
import modules from './modules'
const query = modules.homeModels.homeModel1()
加成:
为了澄清,Object.assign({}, obj1, obj2)
创建了一个新对象,其原型设置为Object原型,并合并了obj1和obj2的属性和方法。在这个简单的形式中,它与const obj = {}
基本相同。
更高级,是Object.assign({}, { obj1, obj2 })
,它在新对象上生成obj1和obj2属性。您可以进行一些简单的测试,以了解数据结构。
我们也使用了一些解构。如果您在正确排列问题时遇到问题,则应该查看这些方面以及如何将它们导入文件。例如,import obj1 from './modules'
将从./modules中引入整个对象,但import { obj1 } from './modules'
将从它所引入的对象中解构obj1,因此obj1是对象的方法/属性。
对控制和依赖注入的反演进行一些研究。