আমি এমন একটি দৃশ্যের সন্ধান করতে অক্ষম যেখানে একটি গ্লোবাল 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: ডেটা পেতে / সেট করতে একটি সহায়ক ফাংশন ব্যবহার করুন
এটির কোনও বড় অনুরাগী নন, তবে কমপক্ষে আপনি 'নাম' (ওপির উদাহরণটি উদ্ধৃত করে) এর ব্যবহার ট্র্যাক করতে পারেন এবং বৈধতাগুলিকে জায়গায় রাখতে পারেন।
// 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();
...
গ্লোবাল থাকার ব্যতীত অন্য কোনও সমাধান না থাকলে ব্যবহারের কেস হতে পারে var
, তবে আপনি যদি নোড.জেএস ব্যবহার শুরু করেন (তবে আমি যেমন কিছুকাল আগে ছিলাম) চেষ্টা করলে সাধারণত আপনি এই অ্যাপ্লিকেশনটিতে ডেটা ভাগ করতে পারেন these আপনি যেভাবে ডেটা হ্যান্ডেল করেন সেভাবে সংগঠিত করার জন্য কারণ এটি সত্যিই অগোছালো হয়ে যেতে পারে।