का उपयोग कर जावास्क्रिप्ट में एएमडी कार्यान्वित करना मैं RequJS के लिए बिल्कुल नया हूं इसलिए मैं अभी भी इसके आसपास अपना रास्ता ढूंढने की कोशिश कर रहा हूं। मेरे पास एक प्रोजेक्ट था जो पूरी तरह से ठीक काम कर रहा था, फिर मैंने RequJS का उपयोग करने का फैसला किया, इसलिए मैंने इसे गड़बड़ कर दिया :)RequJS
इस तरह से, मेरे पास RequJS के बारे में कुछ प्रश्न हैं और यह सब कुछ कैसे पता लगाता है।
मैं अपने _Layout.cshtml
फाइल के अंदर निम्न पंक्ति है:
<script data-main="@Url.Content("~/Scripts/bootstrap.js")" src="@Url.Content("~/Scripts/require-2.0.6.js")" type="text/javascript"></script>
और यहाँ मेरी bootstrap.js फ़ाइल है:
require.config({
shim: {
'jQuery': {
exports: 'jQuery'
},
'Knockout': {
exports: 'ko'
},
'Sammy': {
exports: 'Sammy'
},
'MD': {
exports: 'MD'
}
},
paths: {
'jQuery': 'jquery-1.8.1.min.js',
'Knockout': 'knockout-2.1.0.js',
'Sammy': 'sammy/sammy.js',
'MD': 'metro/md.core.js',
'pubsub': 'utils/jquery.pubsub.js',
'waitHandle': 'utils/bsynchro.jquery.utils.js',
'viewModelBase': 'app/metro.core.js',
'bindingHandlers': 'app/bindingHandlers.js',
'groupingViewModel': 'app/grouping-page.js',
'pagingViewModel': 'app/paging-page.js'
}
});
require(['viewModelBase', 'bindingHandlers', 'Knockout', 'jQuery', 'waitHandle', 'MD'], function (ViewModelBase, BindingHandlers, ko, $, waitHandle, MD) {
BindingHandlers.init();
$(window).resize(function() {
waitHandle.waitForFinalEvent(function() {
MD.UI.recalculateAll();
}, 500, "WINDOW_RESIZING");
});
var viewModelBase = Object.create(ViewModelBase);
ko.applyBindings(viewModelBase);
viewModelBase.initialize();
});
require(['viewModelBase', 'bindingHandlers', 'Knockout'], function (ViewModelBase, BindingHandlers, ko) {
BindingHandlers.init();
var viewModelBase = new ViewModelBase();
ko.applyBindings(viewModelBase);
viewModelBase.initialize();
});
मैं स्क्रिप्ट फ़ोल्डर के अंदर फ़ाइल पदानुक्रम है
फिर मैंने define
फ़ंक्शन का उपयोग कर अपने मॉड्यूल को लागू किया।
define(['jQuery'], function ($) {
var
publish = function(eventName) {
//implementation
},
subscribe = function(eventName, fn) {
//implementation
}
return {
publish: publish,
subscribe: subscribe
}
});
मैं मूल रूप से मेरी जावास्क्रिप्ट फ़ाइलों के सभी के लिए एक ही बात कर लेते हैं: एक उदाहरण pubsub मॉड्यूल है। ध्यान दें कि /Scripts/utils
फ़ोल्डर के अंदर पबब मॉड्यूल वाली वास्तविक फ़ाइल jquery.pubsub.js
है। यह अन्य मॉड्यूल के साथ भी मामला है।
अद्यतन:
ठीक है मैं अपने बूटस्ट्रैप फ़ाइल अब अद्यतन मैं मैं समझता हूँ कि क्या एक परत है लगता है और कारण है कि मैं इसे का उपयोग किया जाना चाहिए। लेकिन यह अभी भी मेरे लिए काम नहीं कर रहा है, हालांकि मैंने उन सभी मार्गों को भी घोषित कर दिया है जो मुझे लगता है कि उन्हें सही होने में मुझे परेशानी होगी। बात यह है कि यह बूटस्ट्रैप फ़ाइल के अंदर मेरे require
कॉलबैक में भी नहीं जा रहा है, इसलिए मुझे लगता है कि मुझे अभी भी एक समस्या है जिस तरह से मैं अपने मॉड्यूल को कॉन्फ़िगर या परिभाषित कर रहा हूं?
रयान, आपके उत्तर के लिए धन्यवाद। मेरी समस्या यह है कि RequJS निर्भरता को सही ढंग से हल नहीं कर रहा है। उदाहरण के लिए, कंसोल में दिखाई देने वाली पहली त्रुटि पबूब मॉड्यूल में "jQuery परिभाषित नहीं है" है। – Kassem
आपकी निर्देशिका संरचना में '_Layout.cshtml' फ़ाइल कहां है? –
ठीक है मैंने इस बारे में और अधिक पढ़ा है कि एक शिम क्या है और उन्हें कैसे कॉन्फ़िगर करना है और यह सब कुछ है लेकिन मैं अभी भी इसे काम नहीं कर सका। मैंने अपनी पोस्ट अपडेट की है। मैं अभी भी क्या गलत कर रहा हूँ? धन्यवाद। – Kassem