Node.js 如何解决NodeJS中的require(“;../../../../../../../../../../../../../”;)挫折?

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

在下面的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"

有什么想法吗?

你需要控制反转

./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()