Javascript 在nodeJs中使用require的最佳方法

Javascript 在nodeJs中使用require的最佳方法,javascript,node.js,express,dependency-injection,node-modules,Javascript,Node.js,Express,Dependency Injection,Node Modules,我需要知道开发者在nodeJS开发中使用的这两种方法之间的区别,以包括一个模块 第一种方法(通过导入一次模块在应用程序中传递,并通过作为参数传递或将其作为属性绑定到应用程序来使用模块) Server.js(应用程序入口点) routes.js(将预导入的模块传递给不同文件中的控制器) ctrl1.js(终点1控制器) ctrl2.js(终点2控制器) 2.第二种方法(每个控制器导入模块) Server.js(应用程序入口点) routes.js(在控制器中导入模块) ctrl1.js(终点1控制

我需要知道开发者在nodeJS开发中使用的这两种方法之间的区别,以包括一个模块

  • 第一种方法(通过导入一次模块在应用程序中传递,并通过作为参数传递或将其作为属性绑定到应用程序来使用模块)
  • Server.js(应用程序入口点)

    routes.js(将预导入的模块传递给不同文件中的控制器)

    ctrl1.js(终点1控制器)

    ctrl2.js(终点2控制器)

    2.第二种方法(每个控制器导入模块)

    Server.js(应用程序入口点)

    routes.js(在控制器中导入模块)

    ctrl1.js(终点1控制器)

    ctrl2.js(终点2控制器)

    如果我们考虑到

  • 应用程序大小(API和控制器在不同的控制器文件中起作用)
  • 应用程序性能
  • 最佳做法

  • 在尺寸和性能方面的差异可以忽略不计


    第二种方法比较简单,我认为它是最好的,除非你需要把不同的模块注入到同一种控制器类型中,例如用模型类型

    Hi @乔纳斯参数化的通用CRUD控制器,第二种方法占用更多的内存空间,然后第一个?我不明白为什么会这样,因为我们在不同的文件中包含了相同的模块,它不是要通过多次包含来扩展应用程序运行时内存需求,还是只在模块上加载一次?不,节点模块缓存将确保每个模块只加载一次。谢谢@Jonas
    let app = require('express').express();
    let Router = require("./routes");
    let SomeModule = require("./some-module");
    .....
    .....
    
    Router.mountAPI("/api", app, SomeModule);
    .....
    ....
    
    let Ctrl1fun = require("./ctrl1");
    let Ctrl2fun = require("./ctrl2");
    
    exports.mountAPI = function(mount, app, SomeModuleToUseInController) {
        app.use(mount + '/endpoint1', Ctrl1fun(SomeModuleToUseInController));
        app.use(mount + '/endpoint2', Ctrl2fun(SomeModuleToUseInController));
    };
    
    module.exports = function(SomeModule) {
    ....
    ....
    //using SomeModule
    }
    // This file may contain some other controller function for simplicity i took only one 
    
    module.exports = function(SomeModule) {
    ....
    ....
    //using SomeModule
    }
    // This file may contain some other controller function for simplicity i took only one 
    
    let app = require('express').express();
    let Router = require("./routes");
    .....
    .....
    
    Router.mountAPI("/api", app);
    .....
    ....
    
    let Ctrl1fun = require("./ctrl1");
    let Ctrl2fun = require("./ctrl2");
    
    exports.mountAPI = function(mount, app) {
        app.use(mount + '/endpoint1', Ctrl1fun());
        app.use(mount + '/endpoint2', Ctrl2fun());
    };
    
    let SomeModule = require("./some-module");
    
    module.exports = function() {
    ....
    ....
    //using SomeModule
    }
    // This file may contain some other controller function for simplicity i took only one 
    
    let SomeModule = require("./some-module");
    module.exports = function() {
    ....
    ....
    //using SomeModule
    }
    // This file may contain some other controller function for simplicity i took only one