Frage

Ich versuche, jQuery Mobile in ein Projekt einzubinden, das RequireJS für AMD verwendet, möchte jQuery Mobile jedoch nicht als AMD-Modul laden.Die Idee dahinter ist, dass wir AMD für anwendungsspezifische Logik verwenden, aber alle externen Bibliotheksabhängigkeiten wie jQuery durch die einfache manuelle Definition von Skript-Tags in den globalen Geltungsbereich gebracht werden.

Das Problem, das ich habe, besteht darin, ein Skript-Tag für jQuery Mobile zu definieren, bevor das RequireJS-Skript-Tag dazu zu führen scheint, dass RequireJS ein anonymes Modul definiert und einen Konflikt erzeugt, den ich nicht verstehe.Ich habe mir sowohl den jQuery- als auch den jQuery Mobile-Code angesehen und sie sind so eingerichtet, dass sie bedingt aufrufen define() Methode, falls vorhanden.Da ich diese Tags vor dem Laden von RequireJS einfüge, sollten sie nicht aufgerufen werden define().Ich habe dies noch einmal mit Haltepunkten überprüft, aber das ist tatsächlich nicht der Fall.

Wenn ich jQuery Mobile einbinde, erhalte ich die folgende Fehlermeldung:

Error: Mismatched anonymous define() module: [object Object]

Ich verstehe nicht, wie das passiert, wenn jQuery Mobile nicht anruft define().Was mache ich hier falsch?Liegt das an der neuen bedingten AMD-Unterstützung von jQuery Mobile?

War es hilfreich?

Lösung

Zur Bestätigung sollten Sie die erstellte Version von jQuery Mobile verwenden und sie wie folgt vor dem Tag „require.js“ einfügen. Beachten Sie, dass jquery als Skript-Tag eingebunden ist, da jQuery Mobile davon abhängt:

<script src="scripts/jquery.js"></script>
<script src="scripts/jquery.mobile.js"></script>
<script src="scripts/require.js" data-main="scripts/app"></script>

Ich gehe davon aus, dass das funktioniert.Der angezeigte Fehler wird möglicherweise generiert, wenn Sie über folgende Skripts verfügen:

<script src="scripts/require.js" data-main="scripts/app"></script>
<script src="scripts/jquery.js"></script>
<script src="scripts/jquery.mobile.js"></script>

Ich halte dies eher für ein Problem mit RequireJS, nicht für jQuery Mobile, etwas, das ich für RequireJS 1.1 beheben möchte.Aber der erste Satz von Skript-Tags sollte funktionieren.

Wenn dies nicht der Fall ist, wäre es interessant, mehr darüber zu erfahren, wie das JS-Modul Ihrer App jQuery und jQuery Mobile verwendet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top