Co oferuje Google Closure Library w stosunku do jQuery? [Zamknięte]


190

Wobec

  • zaplecze biznesowe
  • Społeczność
  • dostępne rozszerzenia
  • domyślny zestaw funkcji
  • prostota użytkowania
  • i niezawodność

dlaczego wolisz jeden od drugiego?


1
Myślę, że trudno będzie powiedzieć, dlaczego jedno jest preferowane, dopóki inni nie będą mogli eksperymentować z aplikacjami i zobaczyć, jakie są granice zamknięcia.
James Black

3
Kilka porównań składni tutaj: derekslager.com/blog/posts/2010/06/…
user194743

4
Ten artykuł może również pomóc w podjęciu decyzji. Kluczowa lekcja: „Zamknięcie to ekosystem. To nie jest jak jQuery, gdzie po prostu używasz go tu i tam, aby ułatwić dostęp do DOM lub manipulować nim. Jeśli chcesz naprawdę korzystać z Closure, musisz podjąć zobowiązanie, aby naprawdę z niego korzystać. ”
Dan Abramov

2019 Co to jest zamknięcie Google? : D
evilReiko

Odpowiedzi:


176

Spróbuję dodać moją informację.

Więcej niż inna biblioteka JS

Jak rozumiem, Google Closure to nie tylko kolejna biblioteka JS, ale także zestaw narzędzi, które pozwolą Ci zoptymalizować kod JS. Praca z jQuery daje dobre narzędzia i lekką bibliotekę, ale nie zmniejsza własnego kodu. Zamknięcie kompilator będzie. Inspektor zamknięcie może być także użyteczny, jako kod czasami minified ma inny problem niż oryginalny, a jest to ból do debugowania. Integruje się z Firebug i testami jednostek wsparcia, które są obecnie najlepszymi przyjaciółmi obu programistów.

Dokumentacja

Wydaje mi się, że jak każda nowa biblioteka VS o ugruntowanej pozycji, nie będzie w niej dostępnych mnóstwo rozszerzeń i samouczków, które ma jQuery. Jednak naciskanie przez Google powinno zapewnić, że wsparcie i niezawodność będą całkiem dobre. Obecna dokumentacja i samouczek również wydają się naprawdę dobre.

cechy

Funkcje Closure wyglądają jednak przyzwoicie, a jego modułowa architektura również jest obiecująca. Wydaje mi się, że Google używa go od dawna, co oznacza, że ​​można oczekiwać, że wszystkie podstawowe funkcje (i więcej) zostaną wdrożone, i prawdopodobnie w bardzo zoptymalizowany i skalowalny sposób. Próbują przedstawić go jako STL JavaScript, więc powinni go wypolerować.

Po dokładniejszym przyjrzeniu się funkcjom wydaje się, że może to być krok naprzód w rozwoju aplikacji internetowych w porównaniu do istniejących bibliotek, takich jak jQuery. Wydaje się, że przynosi korzyści wewnętrzne zmiany w Google, ale takie rzeczy jak wykrywanie stanu online (patrz goog.events.OnlineHandler ), łatwa integracja żądań AJAX i akcji JS w historii przeglądarki (patrz goog.History ) lub legiony świetnych widżetów zapewniają one (patrz pakiet goog.ui ) mogą pomóc nam wszystkim budować jeszcze więcej niesamowitych aplikacji internetowych;)!

Zawiera funkcje szablonów, które integrują się z Javą (kto powiedział GWT ?), Więc może to być kolejny plus dla zamknięcia.

Łatwość użycia

Wreszcie wygląda na dość prosty w użyciu. Składnia może być nieco bardziej szczegółowa niż krótka funkcja $ jQuery, ale z IDE i autouzupełnianiem nie jest to prawdziwy problem. Co więcej, powiedziałbym, że możemy oczekiwać dobrej integracji z IDE, takimi jak Eclipse, pochodzącymi z Google.

EDYCJA: zgodnie z prośbą, pozwól mi powiedzieć kilka słów o referencji GWT. Google Web Toolkit to biblioteka Java, która pozwala tworzyć interfejsy sieciowe obsługujące AJAX i generuje (i optymalizuje) wymagany kod JavaScript. Ponieważ Google Closure pozwala tworzyć szablony, które mogą być używane zarówno po stronie klienta, jak i serwera (przy użyciu JavaScript i Java), domyślam się, że wkrótce będzie można z nich korzystać wspólnie (jeśli tak nie jest).


5
Szczegółowa i znacząca odpowiedź, dziękuję. Czy mógłbyś wyjaśnić, co oznacza to odniesienie do GWT? Obawiam się, że tego nie rozumiem.
pestaa

1
Myślę, że powinieneś również wspomnieć o bibliotece szablonów (Soy) w sekcji „Więcej niż”. Ten sam plik szablonu może być używany zarówno po stronie serwera (Java), jak i po stronie klienta. Naprawdę fajna implementacja IMO. Oznacza, że ​​możemy po prostu wysyłać JSON w zapytaniach AJAX zamiast wysyłać HTML - oszczędza przepustowość.
Frank Krueger,

1
Właśnie odkryłem krytykę przeciwko Zamknięciu, ale może to tylko FUD: sitepoint.com/blogs/2009/11/12/…
dokładnie

7
Krytyką nie jest FUD i dzięki za link. Krytyka koncentruje się na tym, że kod javascript nie wszędzie jest optymalny. Może to być poprawne, ale brakuje większego punktu. Jak rozumiem, Closure atakuje naprawdę złożone aplikacje JS (w skali GMaila), a to ma pewne konsekwencje - takie jak nie każda linia jest optymalna, ponieważ wszystko nie jest napisane przez jednego genialnego programistę. Ale odwrotnie, może być dalej skalowane jako platforma inżynierii oprogramowania.
Peter S Magnusson

3
@nalpy Jak zasugerowano w komentarzach, w tym artykule nie wspomniano, że biblioteka ma KOMPILER (a nie minimalizator), który może zoptymalizować te problemy z kodowaniem.
Ant

30

W moim krótkim spojrzeniu na API stwierdzam, że różnice między jQuery a Closure są uderzające.

jQuery jest w zasadzie tylko uproszczonym sposobem wykonywania wielu częstych operacji w trybie przeglądarki.

Zamknięcie jest strukturą, która jest bardzo nowa, ponieważ zapewnia sposób korzystania z wielu przeglądarek <canvas> na przykład tagu i dodała nowe zdarzenia.

Jest to więc dodatek do tego, co zwykle robimy z javascript, biorą wiele operacji, które ludzie chcą zrobić i umieszczają je w interfejsie API.

Na przykład mają zdarzenie informujące, czy stan online zmienił się. Dzięki temu możesz stwierdzić, czy system jest online.

Posiadają funkcje javascript, które używają narzędzi takich jak Google Gears, co jest kontynuowane przez fakt, że rozszerzyły one możliwości JavaScript.

Przetworzenie wszystkich zmian zajmie mi kilka dni, ale widzę, że może to mieć duży wpływ na aplikacje internetowe, które można opracować.


25

Największą zaletą biblioteki zamknięcia jest to, że została zaprojektowana dla kompilatora zamknięcia. Otwiera to zupełnie nowe możliwości programowania JavaScript ...

Kompilator ma kilka fajnych funkcji:

  • Kompiluje czytelny JavaScript w skompresowany JavaScript do odczytu maszynowego - ma najlepszy współczynnik kompresji w trybie „ZAAWANSOWANYM”.
  • Dokumentacja kodu za pomocą tagów JSDoc jest ważna: kompilator czyta go, a podczas kompilacji pojawiają się ostrzeżenia o literówkach w dokumentacji, niewłaściwe użycie @constructor, niewłaściwy typ zmiennej , niewłaściwe użycie pola opatrzonego @private i @protected, itp.
  • Jeśli piszesz bibliotekę JavaScript wielokrotnego użytku, taką jak OpenLayers lub Google Maps, formalnie eksportujesz swój publiczny interfejs API - a kompilator optymalizuje kod wewnętrzny.
  • Aplikacje końcowe można skompilować razem z biblioteką - a następnie nieużywane części biblioteki są usuwane z wytworzonego kodu. Zależności są rozwiązywane automatycznie przez kompilator.
  • Kompilator akceptuje stałe w celu usunięcia niechcianej funkcjonalności - pozwala to na kompilację tylko dla określonej przeglądarki, takiej jak Mobile WebKit, tylko dla jednego z trybów dziwactwa lub trybu ścisłego, kompilacja bez obsługi IE6 itp.
  • Debugowanie za pomocą FireBug jest możliwe nawet dla skompilowanej wersji kodu źródłowego.
  • Kompilator obsługuje generowanie dynamicznie ładowanych modułów, które mogą znacznie przyspieszyć ładowanie aplikacji końcowej, ponieważ kod dla zaawansowanych funkcji można załadować tylko wtedy, gdy jest to wymagane.

Szczegółowe informacje można znaleźć na stronie : http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html


20

Edycja : spójrz na ten film na youtube który może lepiej odpowiedzieć na niektóre pytania dotyczące zamknięcia Google.

Prawdopodobnie najlepszym źródłem informacji na temat zamknięcia google są grupa dyskusyjna projektu , wiki, strony z dokumentami, wersje demo oraz niedokończona książka Michaela Bolina, która jest teraz dostępna na stronie z książkami z safari.

jedną rzecz, którą mogę od razu powiedzieć - jest bardziej stroma krzywa uczenia się w closureporównaniu do vs, jQueryale może być tego warta ze względu na ogrom biblioteki, przejrzystą organizację i zaletę korzystania z niej razem z kompilatorem i narzędziem do tworzenia szablonów.

closurebiblioteka pod tym względem jest bardziej podobna dojoniż jQuery, a niektóre koncepcje zostały zapożyczone dojo, według Michaela Bolina.

kompilator zamykający google korzysta z JSDocsystemu dokumentacji, który jednocześnie (jeśli poprawnie utworzony przez programistę) zapewnia dokumentację i umożliwia wychwycenie wielu błędów w czasie kompilacji.

podczas gdy nazwy funkcji są bardziej szczegółowe niż te jQuery, kompilator zmniejsza kod (przy użyciu różnych taktyk optymalizacji), a sprawdzanie typu zaoszczędzi sporo czasu na debugowaniu kodu, więc wpisywanie dłuższych nazw prawdopodobnie nie stanowi problemu. Jednocześnie dłuższe nazwy zwiększają czytelność.

biblioteka obsługuje przeglądarki działające w trybie dziwactw, dzięki czemu skrypty mogą być osadzane przez inne witryny przy użyciu „dziwnego” HTML

biblioteka współpracuje z (ale nie zależy od) systemem szablonów javascript, soyktóry upraszcza wypełnianie dokumentów treścią.

jak jQuerygoogleclosure pozwala na przemierzanie struktury domu za pomocą zapytań opartych na łańcuchach znaków przy użyciu dedykowanego składnika biblioteki.

closurebiblioteka opiera się na przestrzeni nazw rozdzielanej kropkami, bardziej podobnej Java- bardzo silnej funkcji organizacyjnej.

korzystanie z takich przestrzeni nazw spowoduje narzut w nieskompilowanym kodzie, ale w skompilowanym kodzie te rzeczy są zastępowane krótkimi nazwami zmiennych.


1
Szukałem czegoś innego i znalazłem się tutaj, ale dobrze wiedzieć like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.Czy możesz połączyć mnie z dokumentacją z tym związaną?
IsmailS,

@iSid: Myślę, że on mówi goog.dom.DomHelper, ale osobiście nie widzę funkcji zapytania równoważnej z jQuery. @Evgeny: Czy możesz podać nam więcej szczegółów?
ekshuma

@iSid: Funkcjonalność zapewnia goog.dom.query , który nie jest udokumentowany, podobnie jak reszta przestrzeni nazw goog.dom.
bkirkbri

8

Właśnie opublikowałem dość wyczerpujący artykuł na temat Google Closure, który odpowiada na to pytanie w insideRIA .

... Zasada zamknięcia! ^ _ ^


4
Przyjemne porównanie z jQuery: „[...] jQuery działa naprawdę dobrze i umożliwia wspaniałe rzeczy bez wysiłku i szybko, więc„ obietnicą ”zamknięcia nie jest oferowanie lepszych algorytmów, ale naprawdę lepsze, zorganizowany i możliwy do utrzymania sposób wdrażania aplikacji JavaScript [...] Kodowanie w zamknięciu oznacza myślenie z myślą o obiektach, tworzenie kilku plików js, z których każdy reprezentuje jedną klasę, organizowanie architektury aplikacji w pakiety i wreszcie wdrażanie za pomocą dostarczonych narzędzi , uzyskanie pojedynczego, skompresowanego i bezpiecznego pliku JavaScript [...] ”
Alex

7

Być może nie otrzymuję jQuery, ale nie widziałem tam prawdziwej kolekcji widżetów interfejsu użytkownika (istnieją wtyczki, tak, ale nigdy nie wiadomo, jak dobrze przetestowane i często nie ma wyraźnego zwycięzcy i / lub brak wtyczki dokumentacja).

Zamknięcie ma między innymi kolekcję widżetów (zobacz kartę dema), w tym, powiedzmy, pozbawione obrazów przyciski używane w Gmailu .

Mówiąc bardziej ogólnie, ma więcej funkcji zaimplementowanych w ramach wydania. To może nie być wielka sprawa, ale denerwuje mnie morze wtyczek jQuery, gdy szukam czegoś tak prostego jak moduł historii ajax lub autouzupełnianie.

Ogólnie rzecz biorąc, jest to ogromna biblioteka + zestaw narzędzi i zapoznam się z nią, aby dowiedzieć się, co jest dostępne.


2
jqueryui.com to oficjalna kolekcja widżetów interfejsu użytkownika
Jourkey

1
tak, cóż, sądząc po stronie ma 6 widżetów: Accordion Datepicker Dialog Progress Pasek suwaka Tabs
Nickolay

3
Użyłem jQueryUI i myślałem, że jest bardzo słaby. Wydaje się, że prawie nie jest w fazie rozwoju. Kiedy ostatnio dodawano nowy widżet. Może to być oficjalna kolekcja widżetów, ale każdemu, kto szuka widżetu do użycia z jQuery, lepiej jest po prostu google w przypadku widżetów jQuery innych firm.
Nosredna

2
jQueryUI to nie tylko zestaw widżetów javascript, ma także świetny framework css. To było dla mnie świetne narzędzie do stylizacji stron CRUD / admin. Ponadto wiele z tych „widżetów zamknięcia” to 1-2 linijki w jQuery, nie warto nawet pisać wtyczki.
Jace Rhea

2
Atrakcyjność JQuery nie polega na gotowych widgetach. Tworzy własne niestandardowe widżety w rekordowym czasie. Rzadko dotykam wtyczek, w tym interfejsu użytkownika.
Erik Reppen

1

Doceniam większość wkładu Google w społeczność open source i jestem pewien, że ma kilka fajnych rzeczy, ale ogólnie uważam, że zamknięcie jest nieporęczne, przytłoczone i nieeleganckie. Jeśli musisz wszystko zamienić w Javę, to chyba nie jest łatwa.

Edytować:

Słusznie. Tak naprawdę nie porównywałem. Zamknięcie jest jak gigantyczny magazyn z każdym możliwym narzędziem, które możesz chcieć znaleźć ... gdzieś. Coś w rodzaju .NET lub ogromnej biblioteki Java. Gdy znajdziesz to, czego potrzebujesz, możesz znaleźć bardzo konkretne rzeczy, które wykonują bardzo konkretne zadania. A następnie do produkcji możesz usunąć wszystkie cruft.

Z drugiej strony JQuery jest bardziej łatwo modyfikowalnym śrubokrętem dźwiękowym.


1
Chciałbym dowiedzieć się więcej o wersji Java zamknięcia. Czy masz do tego link? Dzięki
Yazz.com

Wyszukaj „ironiczne tagi”. Znajdziesz tam odpowiedź.
Erik Reppen

0

Google Closure Library umożliwia kompilację i optymalizację JavaScript. To nie jest biblioteka taka jak jQuery. jQuery to coś, co zapewnia funkcje umożliwiające szybsze pisanie własnego javascript.

Google Closure pomoże ci zminimalizować własny kod javascript, aby umożliwić szybsze dostarczanie przez Internet.

Krótko mówiąc, Google Closure to narzędzie, natomiast jQuery jest biblioteką podobną do Prototype.


6
To nie do końca prawda. Google Closures ma również własną bibliotekę podobną do jQuery, która udostępnia funkcje i narzędzia do pisania własnego kodu: code.google.com/closure/library/docs/tutorial.html
Wookai

2
Ach okej! Dzięki za poprawienie mnie!
Tereno

2
+1 Za próbę bycia pomocnym :)
Andomar
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.