var
En 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.