javascript - Node 需要用方括号传递 arg 的模块?这是一个错误吗?

标签 javascript node.js

我在 git hub 仓库中看到了以下 nodeJS 代码:

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

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

有问题的 repo 在这里 https://github.com/diki/nodejs-passport-boilerplate及其在 server.js 的第 17 行。

最佳答案

查看他们的 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'];

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

关于javascript - Node 需要用方括号传递 arg 的模块?这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29560422/

相关文章:

javascript - 函数的长度属性

javascript - 如何在 AngularDart 中访问 DOM?

javascript - Botkit - 异步拉取用户数据

JavaScript 设计模式——处理不需要的异步

javascript - 如何在限制行长度的angularjs中显示多行

javascript - 在 react 中对密码字段进行自定义验证

node.js - 在 Mongoose 中添加复杂的数据结构

mysql - Node.js 中的单元测试和模拟 mySQL 数据库

arrays - 如何 for 循环集合中的所有文档 - Azure CosmosDB - Nodejs

javascript - SPA 和 node.js 服务器的身份验证