उपयोगिता विधियों के लिए, मैं उन्हें कोणीय ढांचे के बाहर एक पुस्तकालय में व्यवस्थित करता हूं, लेकिन angular.extend पर एक छोटी निर्भरता के साथ। यदि आप अपनी लाइब्रेरी को कोणीय से पूरी तरह से स्वतंत्र करना चाहते हैं, तो आप अपने कार्यान्वयन के साथ extend
को प्रतिस्थापित कर सकते हैं।
एक जावास्क्रिप्ट बाड़े में अपने उपयोगिता एपीआई लपेटें और window
की एक संपत्ति के रूप में अपने पुस्तकालय का पर्दाफाश (नीचे उदाहरण में, मैं अपने पुस्तकालय MyLibrary नाम दिया है, लेकिन आप का चयन करने के जो भी नाम आप की तरह स्वतंत्र हैं)। window
की संपत्ति के रूप में अपनी लाइब्रेरी को जोड़कर, आप योग्यता के बिना 'myLibrary' को संदर्भित करने में सक्षम होंगे। यदि आप उत्सुक हैं, तो यह ठीक है कि कोणीय लाइब्रेरी का खुलासा हुआ है।
(function (window, document) {
'use strict';
// attach myLibrary as a property of window
var myLibrary = window.myLibrary || (window.myLibrary = {});
// BEGIN API
function helloWorld() {
alert('hello world!');
}
function utilityMethod1() {
alert('Utility Method 1');
}
function utilityMethod2() {
alert('Utility Method 2');
}
// END API
// publish external API by extending myLibrary
function publishExternalAPI(myLibrary) {
angular.extend(myLibrary, {
'helloWorld': helloWorld,
'utilityMethod1': utilityMethod1,
'utilityMethod2': utilityMethod2
});
}
publishExternalAPI(myLibrary);
})(window, document);
प्रयोग
एक बार स्क्रिप्ट जोड़ा जाता है, आप कहीं से भी अपने पुस्तकालय का उपयोग कर सकते हैं - सेवाओं, कारखानों, प्रदाताओं, नियंत्रक, निर्देशों आदि
<script type='text/javascript' src='angular.js'></script>
<script type='text/javascript' src='myLibrary.js'></script>
<script>
myLibrary.helloWorld();
myLibrary.utilityMethod1();
myLibrary.utilityMethod2();
</script>
उपयोगिता पुस्तकालय बनाम कोणीय सेवाएं
कारण मैं उपयोगिता पसंद करता हूं कोणीय सेवाओं की बजाय अपनी पुस्तकालय में रहने के लिए कार्य है क्योंकि मैं उन्हें कोणीय पारिस्थितिक तंत्र से अलग होने के बारे में सोचता हूं। ये उपयोगिता कार्य बहुत अधिक अकेले हैं और मॉड्यूल अज्ञेयवादी हैं, जबकि कोणीय सेवाएं/कारखानियां कोणीय के अन्य हिस्सों के साथ मिलकर काम करती हैं, जिसमें नियंत्रक और निर्देश शामिल हैं, और मॉड्यूल से बहुत निकटता से जुड़े हुए हैं।
विस्तार कोणीय
तुम सच में चाहते हैं तो आपके भी कोणीय पुस्तकालय खुद का विस्तार कर सकते हैं। स्क्रिप्ट में angular
के साथ बस myLibrary
को प्रतिस्थापित करें (नोट: यह सलाह नहीं दी जा सकती है क्योंकि यह आपकी स्क्रिप्ट को कोणीय कार्यान्वयन पर निर्भर करेगी)।
यह वास्तव में एक बहुत अच्छा विचार है। बाहरी कोड में एक कोणीय सेवा का उपयोग करने का कोई तरीका है? – Sprottenwels
वहाँ है, लेकिन आपको कोणीय के $ इंजेक्टर का उपयोग करने की आवश्यकता होगी: var $ injector = angular.injector(); var myService = $ injector.get ('myService'); – pixelbits
मुझे एपीआई कार्यों से एक मूल्य वापस करने में परेशानी हो रही है। मैंने पुष्टि की है कि एपीआई फ़ंक्शन को कॉलर से कॉल किया जाता है, वापसी मान * अपरिभाषित * है। क्या मुझे कुछ याद आती है? – Unplug