AngularJS module.constant
मानक अर्थ में एक स्थिरांक को परिभाषित नहीं करता है।
हालांकि यह एक प्रदाता पंजीकरण तंत्र के रूप में अपने दम पर खड़ा है, यह संबंधित module.value
( $provide.value
) फ़ंक्शन के संदर्भ में सबसे अच्छी तरह से समझा जाता है । आधिकारिक दस्तावेज उपयोग के मामले को स्पष्ट रूप से बताता है:
$ इंजेक्टर के साथ एक मूल्य सेवा पंजीकृत करें, जैसे कि एक स्ट्रिंग, एक संख्या, एक सरणी, एक वस्तु या एक फ़ंक्शन। यह एक ऐसी सेवा को पंजीकृत करने के लिए कम है जहां इसके प्रदाता की $ प्राप्त संपत्ति एक कारखाना कार्य है जो कोई तर्क नहीं लेता है और मूल्य सेवा देता है। इसका मतलब यह भी है कि अन्य सेवाओं को मूल्य सेवा में इंजेक्ट करना संभव नहीं है।
इसके लिए प्रलेखन की तुलना करें module.constant
( $provide.constant
) जो स्पष्ट रूप से उपयोग के मामले (जोर मेरा) को बताता है:
$ इंजेक्टर के साथ एक निरंतर सेवा पंजीकृत करें, जैसे कि एक स्ट्रिंग, एक संख्या, एक सरणी, एक वस्तु या एक फ़ंक्शन। मूल्य की तरह, अन्य सेवाओं को एक स्थिर में इंजेक्ट करना संभव नहीं है। लेकिन मूल्य के विपरीत, एक निरंतरता को एक मॉड्यूल कॉन्फ़िगरेशन फ़ंक्शन में इंजेक्ट किया जा सकता है (angular.Module देखें) और इसे AngularJS डेकोरेटर द्वारा ओवरराइड नहीं किया जा सकता है ।
इसलिए, AngularJS constant
फ़ंक्शन क्षेत्र में शब्द के सामान्य अर्थ में एक निरंतरता प्रदान नहीं करता है।
उन्होंने कहा कि प्रदान की गई वस्तु पर प्रतिबंध, $ इंजेक्टर के माध्यम से अपनी पूर्व उपलब्धता के साथ, स्पष्ट रूप से पता चलता है कि नाम का उपयोग सादृश्य द्वारा किया जाता है।
यदि आप एक AngularJS एप्लिकेशन में एक वास्तविक स्थिरांक चाहते हैं, तो आप "उसी तरह से" प्रदान करेंगे जो आप किसी भी जावास्क्रिप्ट प्रोग्राम में करेंगे।
export const π = 3.14159265;
कोणीय 2 में, एक ही तकनीक लागू है।
कोणीय 2 अनुप्रयोगों में एक ही चरण में कॉन्फ़िगरेशन चरण नहीं है जैसा कि AngularJS अनुप्रयोग। इसके अलावा, कोई सेवा सज्जाकार तंत्र ( AngularJS सज्जाकार ) नहीं है, लेकिन यह विशेष रूप से आश्चर्यजनक नहीं है कि वे एक दूसरे से कितने अलग हैं।
का उदाहरण है
angular
.module('mainApp.config', [])
.constant('API_ENDPOINT', 'http://127.0.0.1:6666/api/');
अस्पष्ट रूप से मनमाना और थोड़ा ऑफ-पुटिंग है क्योंकि $provide.constant
इसका उपयोग किसी ऐसी वस्तु को निर्दिष्ट करने के लिए किया जा रहा है जो संयोगवश भी एक स्थिर है। आपने भी लिखा होगा
export const apiEndpoint = 'http://127.0.0.1:6666/api/';
सभी के लिए या तो बदल सकते हैं।
अब निरंतरता का मज़ाक उड़ाते हुए परीक्षण करने का तर्क कम हो जाता है क्योंकि यह सचमुच नहीं बदलता है।
एक नहीं नकली π।
बेशक आपका एप्लिकेशन विशिष्ट शब्दार्थ हो सकता है कि आपका समापन बिंदु बदल सकता है, या आपके एपीआई में एक गैर-पारदर्शी विफलता तंत्र हो सकता है, इसलिए एपीआई एंडपॉइंट के लिए कुछ परिस्थितियों में बदलना उचित होगा।
लेकिन उस मामले में, यह constant
कार्य करने के लिए एक एकल URL के स्ट्रिंग शाब्दिक प्रतिनिधित्व के रूप में प्रदान नहीं किया गया है।
एक बेहतर तर्क, और संभवतः एंगुलरजेएस $provide.constant
फ़ंक्शन के अस्तित्व के कारण के साथ एक और गठबंधन किया गया है, जब एंगुलरजेएस को पेश किया गया था, तो जावास्क्रिप्ट में कोई मानक मॉड्यूल अवधारणा नहीं थी । उस स्थिति में, ग्लोबल्स का उपयोग मूल्यों, परस्पर या अपरिवर्तनीय को साझा करने के लिए किया जाएगा, और ग्लोबल्स का उपयोग समस्याग्रस्त है।
उस ने कहा, एक ढांचे के माध्यम से ऐसा कुछ प्रदान करने से उस ढांचे में युग्मन बढ़ जाता है। यह तर्क के साथ कोणीय विशिष्ट तर्क को भी मिलाता है जो किसी अन्य प्रणाली में काम करेगा।
यह कहने के लिए नहीं है कि यह एक गलत या हानिकारक दृष्टिकोण है, लेकिन व्यक्तिगत रूप से, अगर मुझे एक कोणीय 2 आवेदन में एक निरंतरता चाहिए, तो मैं लिखूंगा
export const π = 3.14159265;
बस के रूप में मैं होता मैं AngularJS का उपयोग कर रहे थे।
जितनी चीजें बदलती हैं ...
AppSettings
वर्ग अमूर्त होना चाहिए औरAPI_ENDPOINT
सदस्य होना चाहिएreadonly
।