tl; dr जेसन फ़ाइलों में कॉन्फ़िगरेशन डेटा संग्रहीत क्यों एक वास्तविक तथ्य माना जाता है?कॉन्फ़िगरेशन डेटा संग्रहीत करना (जेसन)
मैंने हाल ही में Maintainable Javascript पुस्तक के कुछ हिस्सों को पढ़ा है, विशेष रूप से कॉन्फ़िगरेशन डेटा अध्याय संग्रहित करना।
यह अध्याय से एक उद्धरण है:
विन्यास डेटा सबसे अच्छा यह और एप्लिकेशन तर्क के बीच एक साफ जुदाई बनाने के लिए एक अलग फाइल में संग्रहित है। एक अच्छा प्रारंभिक बिंदु कॉन्फ़िगरेशन डेटा के लिए एक अलग जावास्क्रिप्ट फ़ाइल होना है। एक बार कॉन्फ़िगरेशन डेटा एक अलग फ़ाइल में है, तो यह उस डेटा को प्रबंधित करने के लिए संभावनाएं खोलता है। एक सार्थक विकल्प आपकी कॉन्फ़िगरेशन डेटा को एक गैर-जावास्क्रिप्ट फ़ाइल में ले जा रहा है।
भले ही आप एक जावास्क्रिप्ट एप्लिकेशन लिख रहे हों, जावास्क्रिप्ट कॉन्फ़िगरेशन डेटा स्टोर करने का एक शानदार तरीका नहीं है। ऐसा इसलिए है क्योंकि वाक्यविन्यास अभी भी एक प्रोग्रामिंग भाषा है, इसलिए आपको यह सुनिश्चित करने की आवश्यकता है कि आपने वाक्यविन्यास त्रुटियां नहीं पेश की हैं।
वह मूल रूप से कहता है कि .json फ़ाइलों या .js फ़ाइलों में कॉन्फ़िगरेशन डेटा संग्रहीत करना एक बुरा अभ्यास है और इसे टालना चाहिए।
json.org से:
JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) एक हल्के डेटा विनिमय प्रारूप है।
इंटरचेंज का मतलब है कि मुझे दो प्रक्रियाओं को एक अच्छी तरह से स्वरूपित तरीके से संवाद करने के लिए डेटा भेजने और प्राप्त करने का अर्थ है।
लोगों का एक बहुत json फ़ाइलों में डेटा है, जो शोर का एक बहुत कुछ कहते हैं भंडारण कर रहे हैं: घुंघराले ब्रेसिज़, खरोज, डबल कोट, कॉमा, नहीं टिप्पणी, आदि लिख सकते हैं
जावा कुंजी-मान लाइनों का उपयोग करता है, क्या इस डेटा को स्टोर करने का एक आसान तरीका है?
a 1
और json प्रारूप के साथ (1):
{
"a": 1
}
और जे एस प्रारूप (2) के साथ:
module.exports = {
a: 1
}
माइक्रोसॉफ्ट जो इन महत्वपूर्ण करने के लिए वर्गों को जोड़ने फ़ाइलें .ini उपयोग करने के लिए पसंद करती है -वृत्त लाइनें
यूनिक्स कॉन्फ़िगरेशन फ़ाइलें भी कुंजी-मान लाइनों का उपयोग करती हैं।
फिर, अगर पूरी दुनिया कुंजी-मूल्य रेखाओं का उपयोग करती है क्योंकि उन्हें मनुष्यों द्वारा पढ़ने/लिखना आसान होता है, तो जेसन दुनिया node.js दुनिया में एक वास्तविक तथ्य क्यों है? कृपया मुझे यह न बताएं क्योंकि ऐसा इसलिए है क्योंकि जेसन और जावास्क्रिप्ट व्यावहारिक रूप से समानार्थी हैं और क्योंकि डेवलपर्स बहुत आलसी हैं और require("./config.json")
पर कॉल करना पसंद करते हैं।
उपरोक्त उदाहरणों में, पहला विकल्प (1) डेटा इंटरचेंजबिलिटी को कम करने के लिए पैदा हुआ था।और दूसरा, आईएमओ, यह सिर्फ खराब है। यह जावा क्लास में कॉन्फ़िगरेशन डेटा संग्रहीत करने जैसा ही है। अगर मैं इस फ़ाइल को php से पढ़ना चाहता हूं क्योंकि मेरे पास रीयल-टाइम चीजों के लिए अपाचे सर्वर और नोडजेज़ हैं, तो मुझे उस फ़ाइल को कैसे पार्स करना है? मुझे एक जावास्क्रिप्ट पार्सर चाहिए।
दोनों विकल्पों में वाक्यविन्यास त्रुटियां नहीं होनी चाहिए या प्रोग्राम क्रैश हो सकता है।
मैं उद्धरण से एक अलग व्याख्या लेता हूं: यह कह रहा है कि * जावास्क्रिप्ट * (यानी, .js फ़ाइलों) में कॉन्फ़िगरेशन संग्रहीत करना बुरा है। यह ** ** नहीं कह रहा है कि JSON में कॉन्फ़िगरेशन कॉन्फ़िगर करना खराब है (यह नहीं है)। ** JSON! = जावास्क्रिप्ट। ** – josh3736
यह मुझे परेशान करता है कि एक्सएमएल को पिंजरे मैच एर में आमंत्रित नहीं किया गया था .. चर्चा ... – dc5