var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development';
var config = require('./server/config/config.js')[env];
我的問題是關於第二行。在函數調用後,我從來沒有見過你有數組的語法。 [env]的效果或意義是什麼?函數調用後放置數組的效果是什麼?
var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development';
var config = require('./server/config/config.js')[env];
我的問題是關於第二行。在函數調用後,我從來沒有見過你有數組的語法。 [env]的效果或意義是什麼?函數調用後放置數組的效果是什麼?
這是一個property accessor,而不是一個數組。一個對象後跟[variable]
用於從對象動態訪問屬性。這是一個相當於config['development']
的動態,允許您在運行時選擇屬性。
你可以斷行分解成:
var config = require('./server/config/config.js');
config[env];
與var env
線,更會:
env
到NODE_ENV
環境變量的值或者'development'
如果變量未設置。./server/config/config.js
文件。env
屬性。例如,如果你的配置包含:
{
"development": {foo: 3},
"production": {foo: 19}
}
,不設置任何環境變量,有問題的生產線將獲取從配置的"development"
塊。
這實際上是一個使用括號表示的成員對象訪問,其中env
將假定包含要檢索的模塊屬性的名稱。沒有數組被創建。
var config_module = require('./server/config/config.js');
var config = config_module[env];
需要config.js文件的第二行看起來像是拉入配置對象。在這種情況下,方括號表示看起來像它用於基於當前環境訪問此對象的屬性。是否生產,開發等
它沒有實例化任何東西。該文件被加載和解析,然後它是一個簡單的屬性訪問。 – ssube
javascript對象的屬性不是? – pipedreams2
我已經編輯了答案來清除措辭。這聽起來更正確嗎? – pipedreams2
這不是一個數組 - 它是'[]'運算符的應用程序,它從對象(包括數組)中提取屬性值。它不是*創建一個數組,換句話說,它是從一個數組中取出某個數據(或者從某個對象中取出數據)。 – Pointy