Gdzie jQuery pasuje do frameworków takich jak JavaScriptMVC, BackboneJS, SproutCore i Knockout?

14

Z radością korzystam z JQuery przez ostatnie 2 lata i odniosłem sukces, tworząc z nim naprawdę fajną funkcjonalność ... więc czuję się z tym dobrze. Wierzę również, że przyszłość sieci będzie kontynuowana na bieżącej ścieżce po stronie klienta.

Jednak...

Kolejne wyzwanie wydaje się mieć postać różnych struktur kontrolerów: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (lista jest długa).

Dodatkowo, istnieje kilka świetnych narzędzi AMD Loader do użycia, takich jak RequireJS lub LabJS itp. Jednak jQuery ma teraz definei thenmożliwości wbudowane .

Coraz trudniej jest to wszystko śledzić ...

A teraz moim zadaniem wydaje się być ocena / wybór strategicznego kierunku korzystania z jakiejś formy środowiska MVC lub MVVM po stronie klienta ... ale mam tak wiele pytań.

  • Gdzie JQuery pasuje do różnych struktur kontrolerów wymienionych powyżej?
  • Czy JQuery używane obok siebie, czy niektóre z nich mają własne „ JQuery -styled wersję” pieczony w?
  • Czy narzędzia takie jak RequireJS są nadal potrzebne, jeśli implementujesz jedną z różnych platform kontrolerów wymienionych powyżej?
  • Czy wbudowane w JQuery funkcje definei thenmożliwości zastępują wspomniany wyżej moduł ładujący AMD?
  • Który wydaje się najbardziej modułowy? (patrz uwagi poniżej)

UWAGI:
Jednej rzeczy, której nie chcę w żadnym przyszłym frameworku, jest wymóg korzystania z ogromnej ilości funkcji, których nie używam. Oznacza to, że wolałbym używać frameworku, który jest naprawdę modułowy. Na przykład, aby użyć interfejsu użytkownika jQuery, musisz pobrać wiele innych bibliotek podstawowych, których w rzeczywistości nie możesz użyć.

Będę eksperymentował z każdym z nich, ale niektóre PRAWDZIWE informacje zwrotne byłyby świetne. Widziałem kilka „podobnych” pytań, ale żadne z nich tak naprawdę nie odpowiedziało na powyższe przekrzywienie.

Z góry dziękuję!

Więzień ZERO
źródło

Odpowiedzi:

11

jQuery narzędzie do normalizacji dla różnych przeglądarek. Daje to następujące

  • Narzędzia DOM
  • System zdarzeń
  • Ajax
  • Animacje
  • Narzędzia ES5
  • jakaś inna rzecz

Backbone / knockout / yada / yada to biblioteki podobne do MVC, które pomagają tworzyć i pisać aplikacje modułowe. Potrzebujesz ich tylko, jeśli chcesz ich struktury.

RequireJS / yada / yada są modułami ładującymi. Potrzebujesz formy modułu ładującego, jeśli chcesz napisać aplikację modułową.

Gdzie JQuery pasuje do różnych struktur kontrolerów wymienionych powyżej?

Jak wspomniano, jQuery normalizuje przeglądarki. ramy kontrolera nie. Nie potrzebujesz jQuery, ale potrzebujesz sposobu na normalizację przeglądarek.

Czy JQuery jest używany obok nich, czy też niektóre z nich mają własną wersję „w stylu JQuery”?

Backbone / knockout / JavaScriptMVC nie ma wbudowanej normalizacji przeglądarki, więc potrzebujesz do tego narzędzia. Nie jestem pewien co do SproutCore, wydaje się, że jest tam dużo.

Czy narzędzia takie jak RequireJS są nadal potrzebne, jeśli implementujesz jedną z różnych platform kontrolerów wymienionych powyżej?

Są one potrzebne tylko w przypadku pisania aplikacji modułowych. Więc prawie tak.

Istnieją trzy warianty aplikacji modułowych

  • Asynchronizacja wymaga programów ładujących, takich jak wymagana JJ
  • synchronizacja wymaga programów ładujących takich jak modul8
  • używając przestrzeni nazw i po prostu włączając pliki
  • pakiety jak ender

Czy zdefiniowane, a następnie możliwości zastosowane w JQuery zastępują wspomniany wyżej moduł ładujący AMD?

Nie. Zdefiniowana funkcja zdefiniowana w jQuery pozwala używać go z modułem ładującym AMD bez owijania jQuery. Nadal potrzebujesz modułu ładującego AMD. Funkcja „wtedy” to tylko cukier odroczonego jQuery.

Który wydaje się najbardziej modułowy? (patrz uwagi poniżej)

To jest spostrzegawcze pytanie. Moje osobiste zdanie jest takie, że wszystkie te frameworki, w tym jQuery, są rozdęte, a nie modułowe.

Chcesz mieć modułowość, pisać własną bibliotekę, pisać własną architekturę.

Jednak jeśli chcesz mniejszego zła, wybrałbym kręgosłup, ponieważ jest prosty i mały lub kręgosłup, który jest podobny

Raynos
źródło
Dzięki Raynos ... Zawsze mogę liczyć na świetną odpowiedź!
Więzień ZERO
@Marjan Czekam na innych, którzy również mogą zadać jakieś uwagi.
Więzień ZERO
@PrisonerZERO: nie ma z tym problemu. Ponieważ wydawałeś się zadowolony z odpowiedzi Raynosa, mój komentarz był na wypadek, gdybyś nie wiedział o przyjęciu odpowiedzi (nie sprawdziłem twojego profilu, a twój przedstawiciel sugeruje, że jesteś tutaj całkiem nowym użytkownikiem)
Marjan Venema
2

Odpowiem na JavaScriptMVC, ponieważ jestem współpracownikiem:

Gdzie JQuery pasuje do różnych struktur kontrolerów wymienionych powyżej?

JavaScriptMVC zależy od jQuery i używa go w szerokim zakresie.

Czy JQuery jest używany obok nich, czy też niektóre z nich mają własną wersję „w stylu JQuery”?

JavaScriptMVC nie ma konkurencyjnych funkcji z jQuery. To nie jest tak prawdziwe w przypadku Backbone, który ma swój własny system zdarzeń. Ale wszystko, co dodaje kręgosłup lub kręgosłup, jest bardzo minimalne.

Czy narzędzia takie jak RequireJS są nadal potrzebne, jeśli implementujesz jedną z różnych platform kontrolerów wymienionych powyżej?

JavaScriptMVC jest wyposażony w system zarządzania zależnościami -> kradzież. Możesz używać JavaScriptMVC z RequireJS, ale kradzież jest w rzeczywistości znacznie bardziej wydajna i pobierana przez użytkownika o równej wielkości.

Który wydaje się najbardziej modułowy? (patrz uwagi poniżej)

To nie jest sprecyzowane. JavaScriptMVC jest niezwykle modułowy. Używasz tylko tego, czego potrzebujesz. W porównaniu do kręgosłupa lub kręgosłupa możesz używać osobnych części M, V lub C. Po złożeniu jest tylko 1k większy niż kręgosłup (przy użyciu jQuery i podkreślenia). Możesz zobaczyć różne rozmiary komponentów podstawowych tutaj: https://github.com/jupiterjs/javascriptmvc/issues/26

Ale JavaScriptMVC jest znacznie potężniejszy (pod względem funkcji) w porównaniu do kręgosłupa lub kręgosłupa. Na przykład, szablony obsługi zdarzeń zapobiegają praktycznie wszystkim wyciekom pamięci. Oto podpowiedź, która ukrywa się po kliknięciu okna:

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

Jest to absolutnie krytyczne w przypadku podejścia MVC, gdy elementy sterujące słuchają zmian w modelu, takich jak:

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

Kontroler automatycznie odłączy wszystkie zewnętrzne procedury obsługi zdarzeń.

Kilka innych zalet tylko części MVC:

  • $ .Class to bardzo wydajny system klas
  • $ .View i $ .Model obsługują odroczenie
  • $ .Controller może „ponownie powiązać” programy obsługi zdarzeń
  • $ .Model obsługuje asocjacje, getter / setters, domyślne, sprawdzania poprawności

Teraz JavaScriptMVC to znacznie więcej niż tylko części MVC (które są częścią podprojektu jQueryMX). To ma:

  • jQueryMX - brakująca funkcja jQuery, taka jak specjalne wydarzenia, pomocnicy domowi itp.
  • Steal - system zarządzania zależnościami. Ale może robić takie rzeczy jak wziąć aplikację ajax i sprawić, że będzie można go indeksować w Google.
  • FuncUnit - niesamowicie potężny framework testowy.

Od tego, czego użyć, wiele zależy. Wiele zależy od tego, czy tworzysz „aplikację”, czy „stronę”. Aplikacja, która wymaga testowania, zarządzania zależnościami, gdzie zależy Ci na wyciekach pamięci, przyjrzałbym się JMVC lub SproutCore.

Jeśli sklejasz ze sobą kilka podstawowych widżetów, spojrzałbym na kręgosłup lub kręgosłup.

Justin Meyer
źródło
„Szkielet lub kręgosłup, możesz użyć osobnych części M, V lub C.” Tylko że każdy z M, V i C jest tak samo duży jak kręgosłup i kręgosłup.
Raynos,
To nieprawda. Szkielet ma 5k i jest zależny od podkreślenia. Nie jestem pewien, co to jest kręgosłup. Ale oto podział: Klasa: 1k, Kontroler: 1,74k, Model: 2,8k, $ .Widok: 1,6k, $ .String: .5k. Łącznie 8,6 tys. To o 3k więcej, ale o wiele bardziej przydatne funkcje.
Justin Meyer,
Czy użyłbyś JavaScriptMVC z czymś takim jak sterowanie Kendo UI? Jakie inne elementy sterujące?
Więzień ZERO
Tak, każda biblioteka interfejsu użytkownika oparta na jQuery powinna działać świetnie (o ile używa systemu zdarzeń jQuery do obsługi zdarzeń).
Justin Meyer,
Powinienem zauważyć, że Backbone może używać Zepato zamiast jQuery, dzięki czemu jest znacznie mniej niż połączone zależności JMVC MVC z jQuery. Ale tracisz sporo bez jQuery.
Justin Meyer