मैं एक सीएमएस में RequireJS एकीकृत कर रहा इसलिए मैं अपने पृष्ठ टेम्पलेट के तल पर यह रखा:लोड आवश्यकताएँ जेएस मॉड्यूल एचटीएमएल बॉडी इनलाइन करता है?
<html>
<body>
{Placeholder1}
<script src="scripts/require.js" data-main="scripts/main"></script>
{Placeholder2}
</body>
</html>
तो प्रत्येक पृष्ठ पर, मैं एक समारोह है कि RequireJS का लाभ उठाता है बनाना चाहते हैं। इसलिए मैं पृष्ठ के तल पर इस रखने की कोशिश की:
<html>
<body>
<h1>Home</h1>
<div class="slider">Slider content</div>
<script src="scripts/require.js" data-main="scripts/main"></script>
<script type="text/javascript">
require([
'jquery',
'utils',
'slider'
], function ($, utils, slider) {
slider.start();
});
</script>
</body>
</html>
लेकिन मैं jQuery, utils और स्लाइडर js फ़ाइलों पर 404 के हो रही है। ऐसा लगता है कि यह मेरे main.js कॉन्फ़िगरेशन कि मैं पढ़ नहीं है:
require.config({
paths: {
jquery: 'libs/jquery-1.8.1.min',
utils: 'libs/utils',
slider: 'libs/jquery.slider.min'
},
shim: {
slider: ['jquery']
}
});
require([ 'utils' ], function (utils) {
utils.init();
});
मैं लोड हो रहा है RequireJS और मुख्य करने की कोशिश की पेज सिर में, लेकिन असंगत परिणाम है कि जिस तरह से मिला है। कभी-कभी jquery, utils और स्लाइडर समय और अन्य बार लोड नहीं किया जाएगा। ऐसा लगता है कि पृष्ठ के निचले हिस्से में इनलाइन "आवश्यकता" पृष्ठ पर मुख्य आवश्यकताजेएस या निर्भरता नियमों से अवगत नहीं है, लेकिन मेरा ब्रेकपॉइंट main.js में हिट करता है, इसलिए मुझे पता है कि इसे कहा जा रहा है। क्या ऐसा इसलिए है क्योंकि main.js को असीमित रूप से लोड किया जाता है लेकिन पेज के निचले हिस्से में मेरी इनलाइन "आवश्यकता" ब्लॉक पेज रेंडर पर लोड हो जाती है? मैं इसके आसपास कैसे पहुंचू?
मैंने पहले से ही आवश्यकताएँ आवश्यक है लेकिन सीएमएस के बिना। मैंने हमेशा "परिभाषित" का उपयोग किया था और मॉड्यूल को हमेशा अचूक रूप से बुलाया था, लेकिन इस तरह RequJS फ़ंक्शन इनलाइन को कभी भी कॉल नहीं करना पड़ा। ऐसा करने के सही तरीके पर कोई विचार?
इस सेटअप के साथ एक समस्या यह है कि स्क्रिप्ट/मुख्य फ़ाइल में एकाधिक मॉड्यूल होते हैं (आमतौर पर जब आरजेजे ऑप्टिमाइज़र का उपयोग किया जाता है) संसाधनों को दो बार लोड किया जा सकता है। यह एक विशेष रूप से एक समस्या है यदि यह एक फ़ाइल है जो आवश्यक परिभाषा का उपयोग नहीं कर रही है। मान लीजिए कि 'स्क्रिप्ट/मुख्य' फ़ाइल में कम जेएस मॉड्यूल शामिल है। इसके अलावा, मान लें कि इनलाइन की आवश्यकता कॉल को भी इस मॉड्यूल की आवश्यकता है।अब यदि मुख्य स्क्रिप्ट लोड होने से पहले इनलाइन कॉल का उपयोग किया जाता है (आमतौर पर मामला क्या होता है) मॉड्यूल दो बार प्राप्त किया जाएगा। यदि सामग्री एएमडी मॉड्यूल नहीं है तो इससे त्रुटियां हो सकती हैं! –