글로벌 var
이 최선의 선택 인 시나리오를 찾을 수는 없지만 물론 선택할 수는 있지만이 예제를 살펴보면 동일한 방법을 수행하는 더 좋은 방법을 찾을 수 있습니다.
시나리오 1 : 구성 파일에 내용 저장
애플리케이션 전체에서 동일한 값이 필요하지만 환경 (프로덕션, 개발자 또는 테스트), 예를 들어 메일러 유형에 따라 변경됩니다.
// File: config/environments/production.json
{
"mailerType": "SMTP",
"mailerConfig": {
"service": "Gmail",
....
}
과
// File: config/environments/test.json
{
"mailerType": "Stub",
"mailerConfig": {
"error": false
}
}
(개발자에게도 비슷한 설정을하십시오)
어떤 구성을로드할지 결정하려면 기본 구성 파일을 만듭니다 (이 파일은 응용 프로그램 전체에서 사용됨)
// File: config/config.js
var _ = require('underscore');
module.exports = _.extend(
require(__dirname + '/../config/environments/' + process.env.NODE_ENV + '.json') || {});
그리고 지금 당신은 데이터를 얻을 수있는 이 같은를 :
// File: server.js
...
var config = require('./config/config');
...
mailer.setTransport(nodemailer.createTransport(config.mailerType, config.mailerConfig));
시나리오 2 : 상수 파일 사용
// File: constants.js
module.exports = {
appName: 'My neat app',
currentAPIVersion: 3
};
그리고 이런 식으로 사용하십시오
// File: config/routes.js
var constants = require('../constants');
module.exports = function(app, passport, auth) {
var apiroot = '/api/v' + constants.currentAPIVersion;
...
app.post(apiroot + '/users', users.create);
...
시나리오 3 : 헬퍼 기능을 사용하여 데이터 가져 오기 / 설정
이것의 열렬한 팬은 아니지만 최소한 '이름'(OP의 예를 인용)의 사용을 추적하고 유효성 검사를 할 수 있습니다.
// File: helpers/nameHelper.js
var _name = 'I shall not be null'
exports.getName = function() {
return _name;
};
exports.setName = function(name) {
//validate the name...
_name = name;
};
그리고 그것을 사용하십시오
// File: controllers/users.js
var nameHelper = require('../helpers/nameHelper.js');
exports.create = function(req, res, next) {
var user = new User();
user.name = req.body.name || nameHelper.getName();
...
global 이외의 다른 솔루션이 없을 경우 유스 케이스가있을 var
수 있지만 node.js를 사용하기 시작한 경우 일반적으로 다음 시나리오 중 하나를 사용하여 앱에서 데이터를 공유 할 수 있습니다. 데이터를 처리하는 방식을 정리하면 정말 어려워 질 수 있습니다.