2013-05-22 5 views
11

Ich kann verstehen, einige Abstraktionsschicht für häufige Operationen wie das Abrufen von DOM-Elementen, Attributmanipulation usw. zu benötigen, aber jQuery ist eine ziemlich massive Bibliothek, die für Ember wie eine Menge Overkill scheint.Warum ist jQuery eine Ember.js-Abhängigkeit?

Nach dem Durchlesen des Quellcodes gibt es nur etwa 30 oder so verwendet von jQuery in Ember und es sieht so aus, als wäre die Mehrheit der jQuery-Verwendung einfache Selektoraufrufe, einige Ereignisse und einige DOM-Traversal.

Ember. $ (RootElement) .off ('. Ember', '**'). RemoveClass ('ember-application'); .

...

Elem = this ($); ..

...

diese $() appendTo (Ziel);

...

Ember $ (Fenster) .auf ('hashchange.ember-Standort -'. + Guid, function() {

usw.

Gibt es andere Gründe Ember erfordert jQuery für jede Anwendung?

Könnten diese wenige Anwendungen in Ember eingebettet werden und jQuery als Abhängigkeit entfernt?

+2

'Jquery' ist grundsätzlich' Javascript' für Leute, die nicht 'javascript' schreiben wollen. Davon abgesehen gibt es eine Menge Leute, die einfach etwas für 1 singular Funktion von jquery einschließen, anstatt die 5 oder 10 Zeilen Code zu schreiben, um es in Javascript zu machen. Das ist zumindest meine Erfahrung. –

+1

und es ist nichts falsch daran –

+0

@ParijatKalia ist das ein Witz? – aaaaaa

Antwort

17

Nur die Ansichtsebene von Ember hängt von jQuery ab. Es wurde historisch stärker verwendet als es jetzt ist. In Zukunft könnten wir, wie Sie vorschlagen, die Funktionalität in Ember selbst einbringen, obwohl wir in Ember keine browserübergreifende Kompatibilität aufrechterhalten wollen, für die jQuery bereits sorgt. Ein anderer Pfad mit jQuery 2.0 wäre eine Möglichkeit, einen Trimmer-Build von jQuery zu erstellen, der nur die Teile enthält, die Ember verwendet.

Wenn es kompromisslose Möglichkeiten gibt, Instanzen der jQuery-Verwendung in Ember core zu ersetzen, sollten Sie die Änderungen als Probleme auf GitHub vorschlagen.

+2

Warum nicht einfach Zepto oder etwas verwenden, wenn jQuery nicht geladen ist? Ähnlich wie Angular eine "minimale jQuery" verwendet. Oder noch besser - stellen Sie sicher, dass Ember sowohl mit Zepto als auch mit jQuery arbeitet. –

22

Die Frage war extremely well explained von Tom Dale (Ember Core Developer).

Im Grunde sagt er:

Ember.js erfordert jQuery aus zwei Gründen:

  • Wir verlassen uns auf sie stark in die Ember/Lenker Integration zum Einfügen und DOM-Elemente zu ändern. Ich persönlich bin nicht interessiert im Umgang mit Cross-Browser-DOM-Manipulation Bugs, aber die jQuery Team zeichnet sich darin aus.
  • Durch die Verwendung einer standardmäßigen DOM-Manipulationsbibliothek in jQuery können Entwickler zwischen verschiedenen Ember.js-Apps wechseln und sich darauf verlassen, dass unter ihnen eine kampferprobte, plattformübergreifende Bibliothek steht.

Wenn Sie sich Sorgen über die Größe sind, würde ich empfehlen, die neue jQuery 2.0 zu untersuchen, die die Möglichkeit, benutzerdefinierte ohne Features baut wie Animation zu tun hat.

Macht viel Sinn für mich.

Update:

Kürzlich Erik Bryn (Ember Kernentwickler auch) schrieb eine sehr interessante comment über den Rahmen und die erwähnten den Stand der Technik von jQuery Verwendung in Ember-Projekten.

einfügen Kommentar:

Es ist ein verbreiteter Irrtum, dass Ember.js monolithisch ist. Ich kann versichern, Sie das ist nicht wirklich wahr. Sie können wählen Sie die Teile von Ember, die Sie wollen oder brauchen (zum Beispiel ist der Router vollständig optional). Unsere Build-Tools unterstützen sogar die Auswahl und Auswahl, welche Pakete Sie möchten. Sie können es heute ohne jQuery verwenden (Sie benötigen zum Shim und haben eine Ereignis Delegation Bibliothek, oder noch einfacher verwenden Sie eine Super-Lightweight custom jQuery build).

Verwandte Themen