节点需要模块传递方括号arg?这是一个错误吗?

时间:2015-04-10 11:34:52

标签: javascript node.js

我在git hub repo上看到了以下nodeJS代码:

var env = process.env.NODE_ENV || 'development'
, config = require('./config/config')[env]
, auth = require('./config/middlewares/authorization')
, mongoose = require('mongoose');

我在[env]之前从未见过方括号这是一个错误吗? 我认为args只能在普通括号( )中传递。我找不到任何关于此的文档。

有问题的回复是https://github.com/diki/nodejs-passport-boilerplate及其server.js的第17行。

1 个答案:

答案 0 :(得分:7)

查看他们的config.js示例,该文件将每个环境的对象导出为键:

module.exports = {
  development: {
    db: 'mongodb://localhost/noobjs_dev',
    root: rootPath,
    // ...
  },
  test: {
    db: 'mongodb://localhost/noobjs_test',
    root: rootPath,
    // ...
  },
  production: {}
}

方括号将仅选择与NODE_ENV变量中定义的环境相关的配置。

假设NODE_ENV保留值development,这与执行此操作相同:

var config = require('./config/config').development;

与此相同:

var config = require('./config/config')['development'];

方括号的优点是它们允许您动态选择对象上的键。