代码之家  ›  专栏  ›  技术社区  ›  Mike Roberts

有没有办法在node/express中将依赖声明分离成自己的文件?

  •  0
  • Mike Roberts  · 技术社区  · 9 年前

    我只是学习节点。js、express等——我的代码有点混乱。我想做的是接受所有的依赖声明,例如:

    var mongoose = require('mongoose');
    var express = require('express');
    var path = require('path');
    etc, etc, etc
    

    然后把它们放在自己的一个单独模块中,然后放在我的主应用程序的顶部。js,只需执行以下操作:

    require('./modules/variables.js');
    

    这样的事情是可能的吗?我研究了很多,但老实说,我甚至不知道该找什么。任何建议都将不胜感激!!

    3 回复  |  直到 9 年前
        1
  •  1
  •   Joost Vunderink    9 年前

    如果您真的想这样做,可以在代码的早期执行以下操作:

    global.mongoose = require('mongoose');
    global.express = require('express');
    global.path = require('path');
    

    有些人会认为这是异端或非常糟糕的编程。就我个人而言,我觉得它比拥有同一套 require 许多文件顶部的行。

    例如,我们使用 log4js 在每个文件中 日志4js 变量始终是log4js模块本身,所以我认为只有一行是可以接受的 global.log4js = require('log4js'); 在中心位置,而不是排队 var log4js = require('log4js'); 在每个文件中。

    你还写道

    我无法从主应用程序获取变量。js结转 到exampleModule.js

    技巧 global 实现这一目标的方法。如果需要不同位置的变量或数据,应使用 export 其中有变量/数据,以及 要求 你需要它们的地方。

    例如,在 app.js :

    // db is the mongoose connection
    module.exports = {
        db: db
    };
    

    exampleModule.js :

    var appVars = require('./app.js');
    // Now you can do something with appVars.db
    

    (注意:这不是有史以来最好的命名方式。)

        2
  •  0
  •   Rachoac    9 年前

    也许不是最好的方法,但我想您可以创建一个模块,导入所有这些依赖项,并将它们粘贴到上下文变量中,如下所示:

    export dependencies = {
      mongoose : require('mongoose'),
      path : require('path'),
      ... etc
    };
    

    然后要求在每页的顶部:

    var dependencies = require('./[<path to your module>]/dependencies');
    

    然后通过从依赖项对象中延迟来引用这些依赖项:

    dependencies.mongoose.somefunction ....
    
        3
  •  0
  •   mawashiii    9 年前

    您可以创建一个单独的文件(例如 variables.js )

    module.exports = {
        myFirstVar: 1234,
        mySecondVar: 'Hi there!'
    };
    

    然后,您可以使用

    var myVariables = require('path/variables.js')
    
    console.log(myVariables.myFirstVar) //1234