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

Pri*_*ens 2 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');
Run Code Online (Sandbox Code Playgroud)

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

有问题的回购在这里https://github.com/diki/nodejs-passport-boilerplate和它的第17行server.js.

vic*_*ohl 7

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

module.exports = {
  development: {
    db: 'mongodb://localhost/noobjs_dev',
    root: rootPath,
    // ...
  },
  test: {
    db: 'mongodb://localhost/noobjs_test',
    root: rootPath,
    // ...
  },
  production: {}
}
Run Code Online (Sandbox Code Playgroud)

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

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

var config = require('./config/config').development;
Run Code Online (Sandbox Code Playgroud)

与此相同:

var config = require('./config/config')['development'];
Run Code Online (Sandbox Code Playgroud)

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