क्या अनुरोध Express.js हैंडलर के अंदर ऐप सेटिंग बदलना अच्छा अभ्यास है?

app.set('title', 'My Site')
var express = require('express')
var app = express()
app.set('title', 'My Site')

app.get('/somehow', function (req, res) {
  req.app.set('title', 'New title')
  res.send('hello world')
})

app.listen(3000)
0
Molfar 26 नवम्बर 2021, 22:28
app सेटिंग्स सर्वर के लिए अनिवार्य रूप से वैश्विक हैं, इसलिए यह एक बहुत ही दुर्लभ मामला होगा जहां एक विशेष क्लाइंट की सेवा करने वाले एक विशेष अनुरोध हैंडलर में वैश्विक सर्वर सेटिंग को बदलना समझ में आता है क्योंकि यह भविष्य के सभी ग्राहकों के सभी अनुरोधों को प्रभावित कर सकता है। . मैं शायद कुछ प्रशासनिक नियंत्रण की कल्पना कर सकता हूं जो ऐसा कर सकता है, लेकिन सामान्य ग्राहक अनुरोध नहीं।
 – 
jfriend00
26 नवम्बर 2021, 22:34
यह ठीक वही है जो मुझे चाहिए। कुछ वैश्विक सर्वर सेटिंग http अनुरोध के साथ बदली गईं।
 – 
Molfar
26 नवम्बर 2021, 22:39
1
जब तक आप JSON जैसा कच्चा डेटा नहीं भेज रहे हैं, तब तक केवल HTML में एक शीर्षक सेट करना बेहतर होगा, या यदि आप चाहते हैं कि यह पग या ejs जैसे टेम्पलेट के साथ गतिशील हो।
 – 
code
26 नवम्बर 2021, 22:42
इसके लिए वास्तविक आवेदन क्या है? क्या यह वास्तव में सिर्फ एक शीर्षक या कुछ और सेट कर रहा है?
 – 
jfriend00
26 नवम्बर 2021, 22:43

1 उत्तर

सबसे बढ़िया उत्तर

क्या अनुरोध Express.js हैंडलर के अंदर ऐप सेटिंग बदलना अच्छा अभ्यास है?

इसका उपयोग ठीक ही किया जा सकता है यदि आप जो करना चाहते हैं वह वैश्विक सर्वर सेटिंग को बदलना है जो भविष्य के सभी ग्राहकों के सभी अनुरोधों को प्रभावित कर सकता है। आम तौर पर, यह किसी प्रकार के प्रशासनिक प्रमाणीकरण (किसी यादृच्छिक क्लाइंट द्वारा नहीं) के तहत किया जाएगा या केवल कुछ प्रकार का सर्वर मीट्रिक जो आप जमा कर रहे हैं।

यह एक विशेष प्रतिक्रिया को प्रभावित करने का उपयुक्त तरीका नहीं होगा (क्योंकि इसका प्रभाव लगातार बना रहता है और भविष्य के सभी अनुरोधों को प्रभावित करता है)। उसके लिए, आपको उस एक प्रतिक्रिया को स्थानीय रूप से या तो मैन्युअल रूप से या HTML टेम्पलेट का उपयोग करके संशोधित करना चाहिए। टेम्प्लेट में डेटा पास करने के लिए, आप इसे सीधे पास कर सकते हैं या इसे res.locals में सेट कर सकते हैं और टेम्प्लेट उस डेटा का उपयोग करके पेज को रेंडर कर सकता है।


यदि यह व्यावसायिक तर्क के लिए है, तो आप आमतौर पर व्यावसायिक तर्क को एक्सप्रेस ढांचे पर निर्भर नहीं बनाना चाहते हैं क्योंकि वास्तव में एक को दूसरे पर निर्भर बनाने का कोई कारण नहीं है। इसके बजाय, आप अपने व्यावसायिक तर्क के लिए एक स्टैंड-अलोन मॉड्यूल लागू कर सकते हैं जो अपने स्वयं के राज्य का ट्रैक रखता है और व्यावसायिक तर्क प्राप्त करने/सेटिंग/कार्यान्वयन के लिए एक इंटरफ़ेस निर्यात करता है। यह तब राज्य को मॉड्यूल-स्तरीय चर के रूप में या डेटाबेस में या जो भी सबसे उपयुक्त हो स्टोर कर सकता है।

इस व्यवसाय तर्क को एक स्टैंड-अलोन मॉड्यूल बनाएं, यह एक्सप्रेस के बिना स्वतंत्र रूप से परीक्षण योग्य बनाता है, अन्य ऐप्स में प्रयोग योग्य, डीबग करने में आसान, आदि ...

1
jfriend00 27 नवम्बर 2021, 00:24
मुझे इस विशेष मामले में बिल्कुल वैश्विक स्थिति परिवर्तन की आवश्यकता है। शीर्षक के साथ मेरा उदाहरण व्यावसायिक तर्क को नहीं दर्शाता है। मेरे ऐप को कुछ उपलब्ध वस्तुओं को ट्रैक करना चाहिए, और प्रत्येक अनुरोध को इसे घटाना चाहिए।
 – 
Molfar
26 नवम्बर 2021, 22:55
- आमतौर पर, व्यावसायिक तर्क को app ऑब्जेक्ट पर नहीं रखा जाएगा, बल्कि एक मॉड्यूल में रखा जाएगा जो एक मॉड्यूल-स्तरीय चर या डेटा संरचना का उपयोग करता है और फिर राज्य को संशोधित करने के तरीकों का निर्यात करता है।
 – 
jfriend00
26 नवम्बर 2021, 23:12
- ऐसा इसलिए है क्योंकि व्यावसायिक तर्क के पास एक्सप्रेस पर निर्भर होने का कोई कारण नहीं है। यह अपने स्वयं के इंटरफ़ेस के साथ अपने स्वयं के मॉड्यूल में अकेला खड़ा हो सकता है। वास्तव में, यदि आप किसी भिन्न वेब ढांचे पर स्विच करते हैं, तो व्यावसायिक तर्क को फिर से लिखे बिना ठीक काम करना जारी रखना चाहिए।
 – 
jfriend00
27 नवम्बर 2021, 00:04