避免在nodejs模块中重复require语句

时间:2016-06-03 09:44:44

标签: javascript node.js express module

目前我在Express中开发了一个应用程序,我创建了几个服务,这些服务是从单个index.js文件中调用的模块:

"use strict";

const MAX_TEXT_LENGTH = 100;

var mysql    = require('mysql')
  , _        = require('underscore')
  , Q        = require('q')
  , moment   = require('moment')
  , env      = process.env.NODE_ENV || 'development'

module.exports.module1     = require('./module1');
module.exports.module2     = require('./module2');
module.exports.moduleN     = require('./moduleN');

由于这种结构,我现在可以拨打var Services = require('./services')一次,我可以访问所有服务。

问题是这个文件中使用的模块,常量和“全局”变量在模块中不可用,所以我必须多次调用它们。

我也尝试将变量命名为let,但这不起作用。

有没有办法在这个index.js文件中定义模块和变量并在模块中使用它们?

感谢!!!

1 个答案:

答案 0 :(得分:1)

在模块中,不是只返回一个简单值,而是返回一个对象,其中每个键都是您要导出的变量。这样的事情。

var myModuule = {
  varIWantToExport: 1,
  methodIWantToExport: function() { return "Hello world!";}
}
module.exports = myModule;

然后,当你在其他模块中需要它时,你可以这样做:

var myModule = require("./my-module");
var myMethod = myModule.methodIWantToExport
var myVar = myModule.varIWantToExport;

显然这仅适用于您的模块。如果您尝试使用某些未在模块中公开的变量/方法,那么您可能会做错事。