Angenommen, ich möchte jquery zusammen mit einem standardmäßigen, nicht amd-fähigen jquery-Plugin verwenden, das mit Standard-Closure definiert wurde: (function($))($.fn.myplugin = { ... })(jQuery);
und alles innerhalb eines .Korrektes Laden von nicht-AMD-kompatiblen jQuery-Plugins in require.js mit jQuery im noConflict-Modus?
Ich benutze diese config:
require.config({
baseUrl: 'js/',
paths: {
'jquery': 'libs/jquery/jquery-noconflict',
'underscore': 'libs/underscore/underscore',
'backbone': 'libs/backbone/backbone',
'jquery-myplugin': 'libs/jquery/jquery.myplugin'
},
shim: {
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
'jquery-myplugin': {
deps: ['jquery']
}
});
ich jQuery laden in No-Konflikt-Modus in libs/jquery/jquery-noconflict.js
, becase ich globalen Namensraum nicht verschmutzen wollen:
define(['libs/jquery'], function() {
return jQuery.noConflict(true);
});
und das ist, wie ich mein Haupt app.js laden:
define([
'jquery',
'underscore',
'backbone',
'jquery-myplugin'],
function($, _, Backbone, MyPlugin){
//MyPlugin is always undefined, not even sure if
//I should be passing it here if it only extends jQuery?
});
Nun, hier ist das Problem, ich erlebe - während ich kann u Wenn Sie alle oben definierten Bibliotheken ohne Probleme haben, konnte ich die korrekte shim
Konfiguration nicht herausfinden, um nicht-AMD fähige jquery plugins zu laden.
Ich habe versucht, jquery-myplugin
als deps
der jquery
(und anders herum), aber ich konnte es nie funktionieren.
Es scheint, wie ich Problem mit dem folgenden Szenario mit bin:
- jQuery Lasten in No-Konflikt-Modus.
- Plugin-Code läuft, erweitern die Instanz der jQuery über
- Ich kann $ innerhalb meiner Anwendung, erweitert durch den Plugin-Code, so $ .myplugin ist verfügbar.
Ich habe im Umlauf ähnliche Fragen gesehen, aber keiner von ihnen löst tatsächlich dieses Problem nur vage Vorschläge wie „Einsatz Shim config“ ...
bearbeiten
geben auch ich versucht, mit
"jquery-myplugin": {
deps: ["jquery"],
exports: "jQuery.fn.myplugin"
}
Und während Plugin Methoden einmal sind als AMD-Modul auf diese Weise geladen wird, kann ich noch nicht Zugang: $('.class').myplugin()
als de fault $ object wurde nicht mit myplugin code erweitert.
Haben Sie immer noch Probleme damit? – Louis
Modulabhängigkeiten sollten in einem Array ausgedrückt werden: 'define (['dep1', 'dep2' ... 'depn'], Funktion (dep1, dep2, ... depn) {});' wie beschrieben [hier] (http://requirejs.org/docs/errors.html#requireargs) – Vikram
guter Haken, aber das war nur mein Tipp auf Stackoverflow, das zugrunde liegende Problem ist immer noch da – rochal