2010-12-13 3 views
2

Ich habe schon lange mit dem Kopf dagegen geschlagen. Ich lade etwa 60 Skriptdateien, die eine bestimmte Abhängigkeitsstruktur berücksichtigen müssen. Das Laden von diesen normalerweise in requirejs funktioniert nicht, also habe ich das Bestellplugin benutzt.RequireJS 'traditionelles' Skript loading aka Bestell-Nr.

Das Bestell-Plugin funktioniert super in Firefox 3.6.12, IE7, IE8, aber meine Anwendung explodiert in Chrome 8. Chrome scheint in beliebiger Reihenfolge ausgeführt zu werden. Ist das ein bekanntes Problem oder gibt es einige Problemumgehungen?

Antwort

7

Disclaimer: Ich bin der Hauptentwickler für RequireJS:

es eine Änderung in dem nächtlichen WebKits wurde, dass die Reihenfolge Plugin bricht. Es wirkt sich auch auf LABjs aus. Es führte zu Implementierungen der HTML5-Spezifikation, die das Ladeverhalten für dynamische Skripts änderten. Die gute Sache ist, dass Browser anfangen zu konvergieren, die schlechte Sache ist, dass die Spezifikation nicht für die geordnete Ausführung von dynamisch hinzugefügten Skriptelementen verantwortlich ist.

Der Autor von LABjs, Kyle Simpson, war engaging the HTML5 group, um eine offizielle Spezifikationsänderung zu erhalten, die die Ausführung von dynamisch hinzugefügten Skripten unterstützt. So weit, dass Firefox Nightlies eine Änderung implementiert haben, und ich glaube, WebKit könnte darüber nachdenken. Another good writeup is by Henri Sivonen.

Alles, was gesagt wurde, ich dachte es betrifft WebKit-Nachtbücher, und ich bin mir nicht sicher, ob Chrome 8 die Änderung aufgenommen hat. Ich erwarte, dass dies der wahrscheinlichste Grund für den Bruch ist, aber mein Komponententest für das Bestell-Plugin scheint für mich in Chrome 8 zu funktionieren.

Wenn Sie bestätigen können, dass Sie auf Chrome 8 und vielleicht nicht den Entwickler-Kanal haben vielleicht ein Chrome 9, das wäre gut zu wissen. Es wäre auch gut zu wissen, welche Version von RequireJS Sie verwenden. 0.15 hat eine Korrektur, die der Änderung in den Firefox-Nachtbüchern entspricht. Wenn Sie eine ältere Version von RequireJS verwenden, können Sie die neuere Version ausprobieren.

+0

Vielen Dank für Ihre Antwort, ich habe gehört, dass die WebKit-Nachtlupen kaputt waren und beim jQuery Summit 2010 kaputt gehen. Ich benutze definitiv Chrome 8, habe auch einen kleinen Test im Internet gesehen, der in meinem Chrome funktioniert. Haben Sie hier Empfehlungen? Mein Hauptzweck ist es, die Entwicklung zu beschleunigen und schließlich den Build Optimizer zu verwenden. Das Build-Tool ist ein bisschen lästig, da es scheint, alle Skripte zu ignorieren, die in der Bestellung enthalten sind! Präfix. – Drew

+0

Als eine Überprüfung der Gesundheit, ich habe nur die Skripte in der Reihenfolge, wie ich dann gesendet, umJS als normale Skript-Tags in meinem HTML-Datei. Dies funktionierte in Chrome8 und FF3 einwandfrei. Gibt es einige Debugging-Optionen, die ich zur Verfügung habe, um zu sehen, was hier nicht geladen wird? – Drew

+1

Der Optimierer wurde verbessert, um mit der Bestellung gut zu funktionieren! Abhängigkeiten jetzt in der gerade veröffentlichten Version 0.2.0, also hoffentlich, dass die Build-Situation helfen wird. Vielleicht möchten Sie auch die Version 0.2.0 ausprobieren, es gab einige Fehlerbehebungen und Änderungen um das Bestell-Plugin herum. Wenn das nicht funktioniert, wenden Sie sich bitte an mich, wenn Sie einen reproduzierbaren Testfall haben, und ich kann ihn mir ansehen. – jrburke