/ / Skript Ladeauftragsfehler - require.js - jquery, backbone.js, requirejs

Fehler beim Laden des Skripts - require.js - jquery, backbone.js, requirejs

Beim erstmaligen Laden der App nach dem Löschen meinercache ich bekomme eine jquery ist nicht definiert bc die app versucht jquery validate zu laden, bevor jquery geladen hat. Nach einer Aktualisierung lädt alles und funktioniert gut. Ich dachte, ich habe das richtig gemacht, aber fehlt mir etwas? Verwenden von backbone.js, require.js und jquery.

Main.js:

require.config({
paths: {
"jquery": "libs/jquery/jquery-min",
"underscore": "libs/underscore/underscore-min",
"backbone": "libs/backbone/backbone-min",
"validate": "jquery.validate-1.11.1.min",
"templates": "../templates"
},

shim: {
jquery: {
exports: "jquery"
},
underscore: {
exports: "_"
},
backbone: {
deps: ["underscore", "jquery"],
exports: "backbone"
},
validate: {
deps: ["jquery"],
exports: "validate"
}
},

});

require([
"app"

], function(App){
App.initialize();
});

App.js

define([
"jquery",
"underscore",
"backbone",
"validate",
"router",
"scripts"
], function($, _, Backbone, validate, Router, scripts){
var initialize = function(){
Router.initialize();
};

return {
initialize: initialize
};
});

Hier ist, worauf ich die Dateien aktualisiert habe, aber immer noch kein Glück:

require.config({
paths: {
"jquery": "libs/jquery/jquery-min",
"underscore": "libs/underscore/underscore-min",
"backbone": "libs/backbone/backbone-min",
"validate": "jquery.validate-1.11.1.min",
"templates": "../templates"
},

shim: {
underscore: {
exports: "_"
},
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
validate: {
deps: ["jquery", "backbone"],
exports: "validate"
}
}

});

require([
"app"
], function(App){
App.initialize();
});

App.js

    define([
"jquery",
"underscore",
"backbone",
"validate",
"router",
"scripts"
], function($, _, Backbone, validate, Router, scripts){
var initialize = function(){
Router.initialize();
};

return {
initialize: initialize
};
});

Antworten:

1 für die Antwort № 1

jquery validate wie hier zu sehen ist ein Plugin, das von $ .validate () aufgerufen wird.

In solchen Fällen sollten Sie keinen Export durchführen.

Sie können versuchen und sehen, ob dies für Sie hilfreich ist:

   shim: {
validate: {
deps: ["jquery"]
}
}

Sie können auch eine ähnliche Stackoverflow-Frage als Referenz sehen: Wie man ein jQuery-Plugin mit requirejs ladbar macht


0 für die Antwort № 2

Woher bekommst du den Fehler? Kannst du einen Stacktrace einfügen?

Überprüfen Sie auch die URL von jQuery. Geben Sie Ihre URL von jquery (endend auf "libs / jquery / jquery-min") in Ihren Browser ein und prüfen Sie, ob sie gefunden werden kann.


0 für die Antwort № 3

exports muss den gleichen Typ aufweisen, der von Skripts von Drittanbietern erwartet wird. In diesem Fall: jQuery und Backbone

require.config({
paths: {
"jquery": "libs/jquery/jquery-min",
"underscore": "libs/underscore/underscore-min",
"backbone": "libs/backbone/backbone-min",
"validate": "jquery.validate-1.11.1.min",
"templates": "../templates"
},
shim: {
jquery: {
exports: "jQuery"
},
underscore: {
exports: "_"
},
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
validate: {
deps: ["jquery"],
exports: "validate"
}
},
});

0 für die Antwort № 4

Das exports Die Eigenschaft muss mit dem Namen der globalen Eigenschaft übereinstimmen. Im Fall von jQuery muss dies der Fall sein $ oder jQuery. Für das Backbone muss es sein Backbone.

Sie müssen auch nicht jQuery shimmen - es ist seit einiger Zeit AMD-kompatibel über eine benannte Definition. Sehen https://github.com/jquery/jquery/blob/master/src/exports.js#L15-L17


-3 für die Antwort № 5

Danke für die Antworten, ich bin mir sicher, dass Sie Feedback bekommen habenbehebt einige andere Probleme, die ich gehabt hätte. Sieht so aus, als ob ich eine wirklich alte Version von require.js 0.27.0 benutzt habe und auf das neuste Update des jquery-Problems aktualisiert habe.