मैं पिछले कुछ दिनों में Requ.JS और सिग्नलआर के साथ काम कर रहा हूं और मैंने देखा कि जब मैं अपनी साइट लोड करता हूं तो कभी-कभी मेरी आवश्यकता के बावजूद jquery से पहले सिग्नलआर/हब्स लोड हो जाते हैं। Js कॉन्फ़िगरेशन प्रकट होता है सही होना।Requ.js + सिग्नलआर
यहाँ मेरी config है:
require.config({
paths: {
jQuery: 'libs/jquery/jquery',
Underscore: 'libs/underscore/underscore',
Backbone: 'libs/backbone/backbone',
Marionette: 'libs/backbone/backbone.marionette'
}
});
require([
'app',
'order!libs/jquery/jquery-min',
'order!libs/jQueryUI/jquery-ui-1.8.11.min',
'order!libs/jqGrid/grid.locale-en',
'order!libs/jqGrid/jquery.jqGrid.min',
'order!libs/underscore/underscore-min',
'order!libs/backbone/backbone-min',
'order!Marionette',
'order!libs/jquery.signalR-0.5.1',
'order!noext!signalr/hubs'
], function (app) {
app.initialize();
});
जब यह विफल रहता है के केन्द्रों फाइल मैं लाइन 16 पर एक त्रुटि प्राप्त। यह uncaught TypeError: Cannot read property 'signalR' of undefined
कहता है।
वी 2 में अपग्रेड किया गया और मेरी कॉन्फ़िगरेशन संशोधित की गई।
var fRequire = require.config({
paths: {
jQuery: 'libs/jquery/jquery',
Underscore: 'libs/underscore/underscore',
Backbone: 'libs/backbone/backbone',
Marionette: 'libs/backbone/backbone.marionette',
sigr: 'libs/jquery.signalR-0.5.1'
},
shims: {
"libs/jquery.signalR-0.5.1": {
deps: ["jQuery"]
},
"libs/jqGrid/jquery.jqGrid.min": {
deps: ["jQuery"]
},
"libs/jquery/jquery-ui-1.8.19.min": {
deps: ["jQuery"]
},
"libs/jqGrid/grid.locale-en": {
deps: ["jQuery"]
},
"noext!signalr/hubs": {
deps: ["sigr"]
}
}
});
fRequire([
'app'
], function (app) {
app.initialize();
});
अब आवश्यकता jQuery के लिए गलत स्थानों में लग रही है, अंडरस्कोर, आदि ... के बावजूद मेरी यह कह विशेष रूप से जहां देखने के लिए। जब मैंने कॉन्फ़िगर किया है तो v1 का उपयोग करने के लिए कॉन्फ़िगर किए जाने पर शायद मेरे पास पुराने ट्यूटोरियल के बाद मेरे साथ कुछ करना है।
http://backbonetutorials.com/organizing-backbone-using-modules/
अंतिम अद्यतन:
यहाँ मेरे कार्य config है। उम्मीद है कि यह इस मुद्दे को पारित करने जैसे किसी भी नए शौक की मदद करेगा।
require.config({
baseUrl: '/js',
paths: {
"jquery": 'libs/jquery/jquery-min',
"underscore": 'libs/underscore/underscore-min',
"backbone": 'libs/backbone/backbone-min',
"marionette": 'libs/backbone/backbone.marionette',
"sigr": 'libs/jquery.signalR-0.5.1'
},
shims: {
"backbone": {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
"underscore": {
deps: ["jquery"]
},
"marionette": {
deps: ["backbone", "jquery"]
},
"sigr": {
deps: ["jquery"]
},
"libs/jqGrid/jquery.jqGrid.min": {
deps: ["jquery"]
},
"libs/jquery/jquery-ui-1.8.19.min": {
deps: ["jquery"]
},
"libs/jqGrid/grid.locale-en": {
deps: ["jquery"]
},
"noext!signalr/hubs": {
deps: ["sigr"]
}
}
});
// for future ref, I loaded jquery here because app.js references sigr which requires it.
// without enabling it before the module is loaded sigr would complain jquery was not enabled.
require([
'libs/domReady',
'app',
'jquery'
], function (domReady, app, $) {
domReady(function() {
app.initialize();
});
});
यह अनिवार्य था कि मैं समारोह (domready, एप्लिकेशन, $) में jQuery लोड। ऐसा करने में विफल होने के परिणामस्वरूप सिग्नलर रिपोर्टिंग होगी कि यह नहीं मिल सका।
इसे "शिम्स" के बजाय "शिम" कहना चाहिए। – Sean