2014-11-13 5 views
4

файл: /config/index.js;скрипты командной строки node.js для конфигурации приложения

var config = { 
    local: { 
     mode: 'local', 
     port: 3000 
    }, 
    staging: { 
     mode: 'staging', 
     port: 4000 
    }, 
    production: { 
     mode: 'production', 
     port: 5000 
    } 
} 
    module.exports = function(mode) { 
     return config[mode || process.argv[2] || 'local'] || config.local; 
    } 

файл: app.js;

... 
var config = require('./config')(); 
... 
http.createServer(app).listen(config.port, function(){ 
    console.log('Express server listening on port ' + config.port); 
}); 

В чем смысл config[mode || process.argv[2] || 'local'] || config.local;.

что я знаю;
1) || означает «или». 2) Когда мы входим на терминал node app.js staging, process.argv[2] получает 2.argument из командной строки NODE.JS, так что это «этап».

, пожалуйста, кто-нибудь может объяснить эти фрагменты кода?

+0

вопрос очень полезен, почему дал -1 очко только для двух основных проблем с грамматикой? >. < –

+0

Вы ответили на свой вопрос. '||' означает 'или'. –

ответ

2

Первая часть определяет объект конфигурации. Затем он экспортирует этот объект.

Когда вы вызываете этот модуль из другого файла/кода, вы можете передать переменную mode этому модулю. Так что, если вы вызываете этот модуль из другого файла, который вы можете сделать:

var config = require('/config/index.js')('staging'); 

Делать это вы будете проездом, что слово/строка 'staging' в переменную mode которым будет в основном такой же, как return config.staging; или вернуть конфигурации [ 'постановки '] быть педагогическим.

|| цепь в основном, как вы сказали. Если первый фальшивый, он перейдет к следующему. Итак, если mode - undefined, следующий - process.argv[2], что означает, что он будет искать дополнительные команды, заданные при вызове приложения. Мне нравится $ node index staging. Это приведет к такому же результату, как описано выше.

Если ни один из этих 2 не определен, local будет по умолчанию! И как защита: в случае, если объект конфигурации не имеет свойства, называемого локальным, или его пустым, он будет по умолчанию равен config.local. Это не имеет особого смысла, если объект конфигурации не отличается или может быть изменен вне приведенного вами примера кода. В противном случае его redudant, повторение последнего or

+1

Серхио, ты отличный, большое спасибо, это лучшее объяснение, я все понимаю :) –

+0

@OsmanErdi рад помочь! – Sergio

Смежные вопросы