Node.js 如何解决NodeJS中的require(“;../../../../../../../../../../../../../”;)挫折?
在下面的node.js中,有没有更好的方法来解决此类问题Node.js 如何解决NodeJS中的require(“;../../../../../../../../../../../../../”;)挫折?,node.js,import,ecmascript-6,Node.js,Import,Ecmascript 6,在下面的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 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"
有什么想法吗?你需要控制反转 ./modules/home/index.js 一,。将导出以下形状的对象:
{
homeModel1: () => {},
homeModel2: () => {}
}
二,。添加新模型时,只需将其添加或导入到此文件,然后将其添加到导出对象
./modules/index.js
Object.assign({},obj1,obj2)
创建了一个新对象,将原型设置为对象原型,并合并了obj1和obj2的属性和方法。在这个简单的形式中,它基本上与constobj={}
相同
更高级的是Object.assign({},{obj1,obj2})
,它在新对象上生成obj1和obj2属性。您可以做一些简单的测试来了解数据结构
我们还使用了一些解构。如果您在正确排列东西时遇到问题,您应该查看这些方面以及如何将它们导入到文件中。例如,import{obj1}from./modules'
将从./modules导入整个对象,但是import{obj1}from./modules'
将从它所拉入的对象中解构obj1,因此obj1是对象的方法/属性
对控制反转和依赖注入进行一些研究。我的第一个问题是,为什么要对文件进行结构化,以至于必须这样做?我的建议是重新整理你的文件,但你没有给太多的东西去做。在这种情况下,为什么需要从一个文件访问所有模型?设置目录树并以另一种方式放置文件,子目录更少/更接近使用它的代码?根据我的经验,为此设置一个解决方案总是会带来很多麻烦。这将调查用于为讨厌的路径设置别名的方法。修复目录结构,可能还有模块依赖关系图。这对于正确的设计来说是不必要的,因此您应该询问如何修复设计,而不是如何处理导入路径。而且,我们需要更多地了解您正在做什么,以建议更好的布局/架构。谢谢您的想法。但是我可以用
export{homeModel1,homeModel2}
代替module.exports=Object.assign({},{homeModel1,homeModel2})
?看起来更短更好…是的。唯一不能做的事情是Object.assign(Object.create(obj3),{obj1,obj2}),它从第三个对象继承原型继承的方法/道具(理论内存性能比not Object.create()更快)。跟出口走。它与您的导入语法选择相匹配。tbh,一旦通过babel,导出可能是相同的。
{
homeModel1: () => {},
homeModel2: () => {}
}
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()