2015-08-13 70 views
0
var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development'; 

var config = require('./server/config/config.js')[env]; 

我的問題是關於第二行。在函數調用後,我從來沒有見過你有數組的語法。 [env]的效果或意義是什麼?函數調用後放置數組的效果是什麼?

+0

這不是一個數組 - 它是'[]'運算符的應用程序,它從對象(包括數組)中提取屬性值。它不是*創建一個數組,換句話說,它是從一個數組中取出某個數據(或者從某個對象中取出數據)。 – Pointy

回答

2

這是一個property accessor,而不是一個數組。一個對象後跟[variable]用於從對象動態訪問屬性。這是一個相當於config['development']的動態,允許您在運行時選擇屬性。

你可以斷行分解成:

var config = require('./server/config/config.js'); 
config[env]; 

var env線,更會:

  1. 設置envNODE_ENV環境變量的值或者'development'如果變量未設置。
  2. 加載./server/config/config.js文件。
  3. 從配置文件中檢索env屬性。

例如,如果你的配置包含:

{ 
    "development": {foo: 3}, 
    "production": {foo: 19} 
} 

,不設置任何環境變量,有問題的生產線將獲取從配置的"development"塊。

0

這實際上是一個使用括號表示的成員對象訪問,其中env將假定包含要檢索的模塊屬性的名稱。沒有數組被創建。

var config_module = require('./server/config/config.js'); 
var config = config_module[env]; 
0

需要config.js文件的第二行看起來像是拉入配置對象。在這種情況下,方括號表示看起來像它用於基於當前環境訪問此對象的屬性。是否生產,開發等

+0

它沒有實例化任何東西。該文件被加載和解析,然後它是一個簡單的屬性訪問。 – ssube

+0

javascript對象的屬性不是? – pipedreams2

+0

我已經編輯了答案來清除措辭。這聽起來更正確嗎? – pipedreams2

相關問題