varEn iyi seçeneğin global olduğu bir senaryo bulamıyorum , elbette bir tane olabilir, ancak bu örneklere bir göz atın ve aynı şeyi başarmanın daha iyi bir yolunu bulabilirsiniz:
Senaryo 1: Öğeleri yapılandırma dosyalarına koyun
Uygulama genelinde aynı olan bir değere ihtiyacınız var, ancak ortama (üretim, geliştirme veya test), örneğin posta türüne bağlı olarak değişiyor, ihtiyacınız olacak:
// File: config/environments/production.json
{
"mailerType": "SMTP",
"mailerConfig": {
"service": "Gmail",
....
}
ve
// File: config/environments/test.json
{
"mailerType": "Stub",
"mailerConfig": {
"error": false
}
}
(dev için de benzer bir yapılandırma yapın)
Hangi yapılandırmanın yükleneceğine karar vermek için bir ana yapılandırma dosyası oluşturun (bu, uygulamanın her yerinde kullanılacaktır)
// File: config/config.js
var _ = require('underscore');
module.exports = _.extend(
require(__dirname + '/../config/environments/' + process.env.NODE_ENV + '.json') || {});
Ve şimdi şu gibi verileri alabilirsiniz :
// File: server.js
...
var config = require('./config/config');
...
mailer.setTransport(nodemailer.createTransport(config.mailerType, config.mailerConfig));
Senaryo 2: Bir sabitler dosyası kullanın
// File: constants.js
module.exports = {
appName: 'My neat app',
currentAPIVersion: 3
};
Ve bu şekilde kullan
// 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);
...
Senaryo 3: Verileri almak / ayarlamak için bir yardımcı işlev kullanın
Bunun büyük bir hayranı değil, ama en azından 'adın' kullanımını takip edebilir (OP'nin örneğini göstererek) ve doğrulamaları yerine getirebilirsiniz.
// 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;
};
Ve kullan
// 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 olmaktan başka bir çözüm olmadığında bir kullanım durumu olabilir var, ancak node.js kullanmaya başlıyorsanız (daha önce olduğu gibi) genellikle uygulamanızdaki verileri bu senaryolardan birini kullanarak paylaşabilirsiniz. oradaki verileri işleme şeklinizi organize etmek için, çünkü çok hızlı bir şekilde dağınık olabilir.