मैं एक "पुराने" ब्राउज़र शैली मॉड्यूल संरचना से एक 'नई' ब्राउज़र- या के लिए एक परियोजना को बदलने कर रहा हूँ - सर्वर साइड-जावास्क्रिप्ट मॉड्यूल require.js के साथ संरचना।कॉलिंग तरीकों
ग्राहक मैं एक ऑफसाइट उपयोग कर रहा हूँ पर jQuery का आयोजन किया है, इसलिए मैं उदाहरण वे README की "use priority config" तकनीक में देने से शुरू:
<title>My Page</title>
<script src="scripts/require.js"></script>
<script>
require({
baseUrl: 'scripts',
paths: {
jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min',
jqueryui: ...,
...
... // bunch more paths here
},
priority: ['jquery']
}, [ 'main' ]);
</script>
यह वास्तव में सब ठीक काम कर रहा है। लेकिन मैं मुख्य रूप से HTML वेबपृष्ठ से कार्यक्षमता निर्यात करना चाहता हूं। उदाहरण के लिए:
<a class="button" href="#" onclick="MyApi.foo();">
<img src="foo.png" alt="foo" />Click for: <b>Foo!</b>
</a>
एएमडी मॉड्यूल पैटर्न में फिटिंग से पहले, मैं कार्यक्षमता मेरी विभिन्न फाइलों से वैश्विक अंतरिक्ष में एक वस्तु शब्दकोश बनाने के द्वारा संपर्क में था:
// main.js
var MyApi = {};
jQuery(document).ready(function($) {
// ...unexported code goes here...
// export function via MyApi
MyApi.foo = function() {
alert("Foo!");
};
});
लेकिन मैं नहीं जानता कि requ.js में सही दृष्टिकोण क्या है। क्या <script>
टैग के अंदर HTML में require
कथन डालना ठीक है, और उसके बाद मॉड्यूल नाम दें ताकि इसका उपयोग वेबपृष्ठ के भीतर से किया जा सके? या यह हमेशा key.js के अंदर गतिशील रूप से किया जाना चाहिए, जैसे $('#foobutton').click(...)
?
अरे, धन्यवाद (बस इस परियोजना पर वापस आना और जवाब में विस्तार से देखना)। आपने शब्दों को शब्दों में डाल दिया है कि ऑनक्लिक में कोड डालने का तरीका इस पद्धति के साथ उपयुक्त नहीं है; सीधे पृष्ठ के HTML में हैंडलर को किसी भी एपीआई की आवश्यकता होती है जिसे वे लोड किए गए सभी .js फ़ाइलों में एक ही आयातित नाम रखने के लिए कहते हैं (er ... सही?)। लेकिन उस टोकन द्वारा ... इस पैटर्न में, पेज.जेएस को jquery मैपिंग को विरासत में बदलने के बजाय '$' पर स्पष्ट रूप से उल्लेख नहीं करना चाहिए क्योंकि सिर्फ यही कारण है कि foo ने इसे आयात किया है? – HostileFork
मैंने हमेशा मॉड्यूल के बारे में सोचा है कि वे पुनः उपयोग करने योग्य, कोड के वर्गीकृत बिट्स हैं। लेकिन इस दृष्टिकोण के साथ सब कुछ एक मॉड्यूल में फेंक दिया जाना चाहिए और घटना बाध्यकारी और वास्तविक मॉड्यूल जैसी नियमित सामग्री के बीच कोई स्पष्ट कटौती नहीं है - अगर आपको मेरा मतलब मिलता है। क्या कोई दूसरा रास्ता नहीं है? – backdesk
सवाल में डीओएम वैश्विक MMyApi ऑब्जेक्ट पर निर्भर है। इस जवाब में पृष्ठ मॉड्यूल डीओएम पर निर्भर है, जो वैश्विक भी है। किसी तरह की निर्भरता होनी चाहिए। उपयोग करने के लिए कौन सा एक व्यक्तिपरक विकल्प है। –