Ergebnis 1 bis 7 von 7

Thema: Konfliktfreie Einbindung von MooTools und jQuery Skripten

  1. #1
    Contao-Nutzer Avatar von dominik.zogg@gmail.com
    Registriert seit
    12.04.2011.
    Ort
    Walzenhausen
    Beiträge
    72

    Standard Konfliktfreie Einbindung von MooTools und jQuery Skripten

    [Moderation: Die folgenden Beiträge wurden aus dieser Diskussion ausgelagert.]

    Wenn man jQuery als alternative anbietet müssen alle Frontend Javascript Lösungen des Cores (zb. Accordeon) für beide Frameworks implementiert werden. Der Parallelbetrieb würde einiges an zusätzlichem Support verursachen, da die meisten jQuery Scripts nicht im noConflict Modus geschrieben wurden.

    $('#test') anstelle von jQuery('#test') zb. was sich mit Mootools dann beissen würde.
    Geändert von xchs (09.02.2012 um 13:50 Uhr)

  2. #2
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von dominik.zogg@gmail.com Beitrag anzeigen
    Wenn man jQuery als alternative anbietet müssen alle Frontend Javascript Lösungen des Cores (zb. Accordeon) für beide Frameworks implementiert werden.
    Soweit ich das dem Commit entnehmen kann, wurde das doch gemacht?

    Zitat Zitat von dominik.zogg@gmail.com Beitrag anzeigen
    Der Parallelbetrieb würde einiges an zusätzlichem Support verursachen, da die meisten jQuery Scripts nicht im noConflict Modus geschrieben wurden.

    $('#test') anstelle von jQuery('#test') zb. was sich mit Mootools dann beissen würde.
    Allerdings sollte man bedenken, dass sich die Schreibweise jQuery(function($) { ... }); immer mehr einbürgert, was unter anderem damit zusammen hängt, dass dies quasi ein Shortcut für jQuery.ready(function($) { ... }); ist. Daher sollte es bei vielen "aktuellen" Tutorials und Beispielen im Netz weniger Probleme geben. Ich mache mir allerdings um die "altgedienten" jQuery'isten Sorgen, die das noch nicht drin haben

  3. #3
    AG Core-Entwicklung
    Registriert seit
    16.10.2009.
    Ort
    Bad Lausick
    Beiträge
    437

    Standard Konfliktfreie Einbindung von MooTools und jQuery Skripten

    Die meisten (nicht-inline) Scripte kann man mit:
    Code:
    (function($, $$, undef) {
    ....
    })(document.id, window.$$);
    oder
    Code:
    (function($, undef) {
    ....
    })(jQuery);
    konfliktfrei machen.
    Geändert von xchs (09.02.2012 um 13:50 Uhr)
    Ihr Partner für Contao und Webentwicklung: http://www.hofff.com.

  4. #4
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Sry backbone, aber deine Variante ist total veraltet.

  5. #5
    AG Core-Entwicklung
    Registriert seit
    16.10.2009.
    Ort
    Bad Lausick
    Beiträge
    437

    Standard

    Für MooTools sicher nicht... bei jQuery ist deine Variante sicherlich "neuer".

    Der Vorteil bei meiner Variante ist, das man NICHTS am Originialscript ändern muss. (Bei der jQuery(function($) {}); Variante allerdings schon.

    Außerdem bricht die jQuery(...) Variante gegebenenfalls ALLE nachfolgenden Skripte ab, wenn die LoadOrder der Skripte nicht richtig ist oder das Framework gar nicht da ist.

    Also noch besser wär das dann so:
    Code:
    if(window.jQuery) jQuery(function($) { ... });
    bzw.
    Code:
    (function($, undef) {
    if(!$) return;
    ...
    })(window.jQuery);
    (ähnlich dann für MooTools...)
    Ihr Partner für Contao und Webentwicklung: http://www.hofff.com.

  6. #6
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    @backbone Was? Wie? Wo? Deine Variante brauch man doch nur für jQuery. Mootools kann man natürlich auch in ein eigenes Environment verpacken, halte ich aber für total unnötig. Die jQuery(function...) Version soll natürlich nur für jQuery Scripte verwendet werden -> jQuery ist eingebunden. Außerdem ist meine Variante durchaus sinnvoll, die sorgt nämlich dafür, das folgende 2 Beispiele equivalent behandelt werden.

    Mootools:
    Code:
    $(window).addEvent('domready', function() {
        ...
    });
    jQuery:
    Code:
    jQuery(function($) {
        ...
    });
    Allerdings hat die jQuery Variante noch einen Vorteil, die wird auch ausgeführt, wenn der domready längst erreicht wurde, was bei einem neu registriertem Event nicht passiert.

    Aber vielleicht sollten wir diese Diskussion wo anders fortsetzen, vielleicht mag ein Mod die betroffenen Posts extrahieren?

  7. #7
    AG Core-Entwicklung
    Registriert seit
    16.10.2009.
    Ort
    Bad Lausick
    Beiträge
    437

    Standard

    Noch kurz was zum Abschluss zu der JS-Framework Geschichte:
    Wenn man schon verschiedene JS-FW anbietet, dann auch "gleichberechtigt" und mit "gleicher" Einbindung, sprich jedes Skript prüft auf vorhandensein "seines" FWs (um keine Skript abbrüche zu verursachen) und jedes Skript läuft in seiner eigenen Env.

    Außerdem ist
    Code:
    (function($, undef) {
    ...
    })(window.jQuery);
    und
    Code:
    (function($, $$, undef) {
    ...
    })(document.id, window.$$);
    Semantisch exakt das gleiche. Arbeiten die mit dem DOM gemacht werden müssen, müssen separat verpackt werden (was aber nicht immer notwendig ist, bei eigenen Prototypen/Klassen).
    Ihr Partner für Contao und Webentwicklung: http://www.hofff.com.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •