Apa yang ditawarkan Google Closure Library di atas jQuery? [Tutup]

190

Mengingat

  • latar belakang bisnis
  • dukungan masyarakat
  • ekstensi yang tersedia
  • serangkaian fitur standar
  • kesederhanaan penggunaan
  • dan keandalan

mengapa Anda lebih suka satu dari yang lain?

pestaa
sumber
1
Saya pikir akan sulit untuk mengatakan mengapa yang satu lebih disukai daripada yang lain sampai orang bisa bereksperimen dengan aplikasi dan melihat apa batas penutupannya.
James Black
3
Beberapa perbandingan sintaksis di sini: derekslager.com/blog/posts/2010/06/…
user194743
4
Artikel ini juga dapat membantu dengan keputusan. Pelajaran utama: “Penutupan adalah ekosistem. Ini tidak seperti jQuery di mana Anda hanya menggunakannya di sana-sini untuk mempermudah mengakses atau memanipulasi DOM. Jika Anda ingin benar-benar menggunakan Penutupan, Anda harus membuat komitmen untuk benar-benar menggunakannya. "
Dan Abramov
2019 Apa itu penutupan google? : D
evilReiko

Jawaban:

176

Saya akan mencoba menambahkan informasi saya.

Lebih dari JS lib lainnya

Seperti yang saya pahami, Google Closure tidak hanya perpustakaan JS lain, tetapi juga seperangkat alat yang akan memungkinkan Anda untuk mengoptimalkan kode JS Anda. Bekerja dengan jQuery memberi Anda alat bagus dan pustaka yang ringan, tetapi itu tidak mengecilkan kode Anda sendiri. The Penutupan compiler akan. The penutupan inspektur juga dapat berguna, sebagai kode kadang-kadang minified memiliki perilaku yang berbeda dari yang asli, dan rasa sakit untuk debug. Ini terintegrasi dengan Firebug dan unit test pendukung, yang merupakan teman baik pengembang saat ini.

Dokumentasi

Saya kira karena setiap perpustakaan baru VS yang sudah mapan, ia akan kekurangan ketersediaan banyak ekstensi dan tutorial yang dimiliki jQuery. Namun, didorong oleh Google harus memastikan bahwa dukungan dan keandalan keduanya cukup baik. Arus dokumentasi dan tutorial keduanya tampaknya benar-benar baik, juga.

fitur

Fitur-fitur dari Closure terlihat baik, dan arsitektur modularnya juga menjanjikan. Saya kira Google telah menggunakannya secara internal untuk waktu yang lama, yang berarti Anda dapat mengharapkan semua fitur dasar (dan banyak lagi) untuk diimplementasikan, dan mungkin dengan cara yang sangat optimal dan terukur. Mereka mencoba menyajikannya sebagai STL dari JavaScript, jadi mereka seharusnya memolesnya.

Setelah melihat fitur lebih dekat, tampaknya ini mungkin merupakan langkah maju untuk pengembangan aplikasi web dibandingkan dengan perpustakaan yang ada sebagai jQuery. Itu mengira itu menguntungkan perkembangan internal di Google, tetapi hal-hal seperti mendeteksi keadaan online (lihat goog.events.OnlineHandler ), integrasi mudah permintaan AJAX dan tindakan JS dalam riwayat browser (lihat goog.History ), atau legiun widget hebat mereka menyediakan (lihat paket goog.ui ) dapat membantu kita semua membangun webapp yang lebih mengagumkan;)!

Muncul dengan fitur templat yang terintegrasi dengan Java (siapa bilang GWT ?), Jadi ini juga bisa menjadi nilai tambah bagi Penutupan.

Kemudahan penggunaan

Akhirnya, tampilannya cukup sederhana untuk digunakan. Sintaksnya mungkin sedikit lebih bertele-tele daripada fungsi $ jQuery pendek, tetapi dengan IDE dan penyelesaian otomatis, ini bukan masalah nyata. Selain itu, saya katakan kita dapat mengharapkan integrasi yang baik dalam IDE seperti Eclipse, yang berasal dari Google.

EDIT: seperti yang diminta, izinkan saya mengatakan beberapa kata tentang referensi GWT. Google Web Toolkit adalah perpustakaan Java yang memungkinkan untuk membuat antarmuka web yang mendukung AJAX dan yang menghasilkan (dan mengoptimalkan) kode JavaScript yang diperlukan. Karena Google Closure memungkinkan untuk membuat Templat yang dapat digunakan baik pada sisi klien dan server (menggunakan JavaScript dan Java), tebakan saya adalah bahwa akan segera dimungkinkan untuk menggunakannya secara bersama-sama (jika belum terjadi).

Wookai
sumber
5
Jawaban terinci dan bermakna, terima kasih. Bisakah Anda jelaskan apa arti referensi ke GWT? Saya khawatir saya tidak mengerti.
pestaa
1
Saya pikir Anda juga harus menyebutkan pustaka template (Kedelai) di bagian "Lebih dari". File template yang sama dapat digunakan di sisi server (Jawa) dan sisi klien. IMO implementasi benar-benar baik. Berarti kita hanya bisa mengirim JSON di kueri AJAX daripada mengirim HTML - menghemat bandwidth.
Frank Krueger
1
Saya baru saja menemukan sebuah kritik terhadap Penutupan, tapi mungkin itu hanya FUD: sitepoint.com/blogs/2009/11/12/...
nalply
7
Kritiknya bukan FUD, dan terima kasih atas tautannya. Kritik ini difokuskan pada bagaimana kode javascript tidak optimal di mana-mana. Ini mungkin valid, tetapi melewatkan poin yang lebih besar. Seperti yang saya pahami, Penutupan menargetkan aplikasi JS yang benar-benar kompleks (pada skala GMail), dan itu memiliki beberapa konsekuensi - seperti tidak semua baris menjadi optimal karena semuanya tidak ditulis oleh satu pembuat kode yang brilian. Tetapi sebaliknya mungkin skala lebih lanjut sebagai kerangka kerja rekayasa perangkat lunak.
Peter S Magnusson
3
@nalpy Seperti yang disarankan oleh komentar, artikel ini tidak menyebutkan bahwa perpustakaan mendapat KOMPILER (bukan minifier) ​​yang dapat mengoptimalkan masalah pengkodean ini.
Semut
30

Dalam pandangan singkat saya di API saya menemukan perbedaan antara jQuery dan Penutupan sangat mencolok.

jQuery pada dasarnya hanyalah cara yang disederhanakan untuk melakukan banyak operasi yang sering dilakukan dengan cara lintas browser.

Penutupan adalah kerangka kerja yang sangat baru, karena mereka menyediakan cara lintas-browser untuk menggunakan <canvas>tag, misalnya, dan mereka telah menambahkan acara baru.

Jadi, ini menambah apa yang biasanya kita lakukan dengan javascript, mereka mengambil banyak operasi yang ingin dilakukan orang dan memasukkannya ke dalam API.

Misalnya, mereka memiliki acara untuk mengetahui apakah keadaan online telah berubah. Jadi Anda bisa tahu apakah sistemnya online.

Mereka memiliki fungsi javascript yang menggunakan alat-alat seperti Google Gears, yang berlanjut dengan fakta bahwa mereka telah memperluas apa yang dapat dilakukan dengan Javascript.

Saya perlu beberapa hari untuk mencerna semua perubahan, tetapi saya dapat melihat bahwa ini bisa berdampak besar pada aplikasi web yang dapat dikembangkan.

James Black
sumber
25

Keuntungan terbesar dari Closure Library adalah yang dirancang untuk Closure Compiler. Ini membuka kemungkinan yang sama sekali baru untuk pengembangan JavaScript ...

Kompiler memiliki beberapa fitur keren:

  • Ini mengkompilasi JavaScript yang dapat dibaca menjadi JavaScript yang dapat dibaca oleh mesin - memiliki rasio kompresi terbaik dalam mode "ADVANCED".
  • Dokumentasi kode dengan JSDoc Tag penting: kompiler membacanya dan Anda mendapatkan peringatan saat kompilasi untuk kesalahan ketik dalam dokumentasi, kesalahan penggunaan @constructor, jenis variabel yang salah, penyalahgunaan bidang yang dijelaskan dengan @private dan @protected, dll.
  • Jika Anda menulis pustaka JavaScript yang dapat digunakan kembali, seperti OpenLayers atau Google Maps, Anda secara resmi mengekspor API publik Anda - dan kompiler mengoptimalkan kode internal Anda.
  • Aplikasi akhir dapat dikompilasi bersama-sama dengan perpustakaan - dan kemudian bagian-bagian yang tidak terpakai dari perpustakaan dihapus dari kode yang dihasilkan. Ketergantungan diselesaikan secara otomatis oleh kompiler.
  • Compiler menerima konstanta untuk menghapus fungsionalitas yang tidak diinginkan - ini memungkinkan kompilasi hanya untuk browser tertentu seperti Mobile WebKit, hanya untuk satu mode Quirks atau mode Strict, kompilasi tanpa dukungan IE6, dll.
  • Debugging dengan FireBug dimungkinkan bahkan untuk versi kode sumber yang dikompilasi.
  • Compiler mendukung pembuatan modul yang dapat dimuat secara dinamis, yang secara signifikan dapat mempercepat pemuatan aplikasi akhir, karena kode untuk fungsionalitas tingkat lanjut hanya dapat dimuat saat diperlukan.

Untuk detailnya lihat di: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html

Petr Pridal
sumber
20

Sunting : lihat video youtube ini mungkin menjawab beberapa pertanyaan tentang Google Penutupan lebih baik.

Mungkin sumber informasi terbaik tentang penutupan google adalah grup diskusi proyek , wiki, halaman dokumen, demo dan buku yang belum selesai oleh Michael Bolin yang sekarang tersedia dari situs buku safari.

satu hal yang dapat saya katakan segera - ada kurva belajar yang lebih curam untuk closurevs jQuerytetapi mungkin layak karena luasnya perpustakaan, organisasi yang jelas dan manfaat menggunakannya bersama dengan kompiler dan alat templating.

closureperpustakaan dalam hal itu lebih seperti dojodaripada jQuery, dan beberapa konsep dipinjam dari dojo, menurut Michael Bolin.

Google closure compiler menggunakan JSDocsistem dokumentasi yang secara bersamaan (jika dibuat oleh programmer dengan benar) menyediakan dokumentasi dan memungkinkan menangkap banyak kesalahan pada waktu kompilasi.

sementara nama fungsi lebih verbose daripada jQuery's, kompiler menyusut kode (menggunakan berbagai taktik optimasi) dan pengecekan tipe akan menghemat waktu debug kode, jadi waktu mengetik nama yang lebih panjang mungkin tidak menjadi masalah. Pada saat yang sama nama yang lebih panjang menambah keterbacaan.

perpustakaan mendukung browser yang berjalan dalam mode quirks sehingga skrip dapat disematkan oleh situs lain menggunakan "quirky" html

library bekerja dengan (tetapi tidak bergantung pada) sistem templating javascript yang disebut soyyang menyederhanakan mengisi dokumen dengan konten.

seperti jQueryGoogle closurememungkinkan melintasi struktur dom dengan kueri berbasis string menggunakan komponen khusus perpustakaan.

closureperpustakaan lebih bergantung pada ruang nama dot-delimited Java- fitur organisasi yang sangat kuat.

menggunakan ruang nama seperti itu akan menimbulkan overhead dalam kode yang tidak dikompilasi, tetapi dalam kode yang dikompilasi hal-hal itu diganti dengan nama variabel pendek.

Evgeny
sumber
1
Saya mencari sesuatu yang lain dan berakhir di sini, tetapi senang tahu. like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.Bisakah Anda menautkan saya ke beberapa dokumentasi yang terkait dengannya?
Ismail
@ Idid: Saya percaya dia berbicara tentang goog.dom.DomHelper, tapi saya pribadi tidak melihat fungsi kueri yang setara dengan jQuery. @ Evgeny: Bisakah Anda memberi kami detail lebih lanjut?
exhuma
@ iSid: Fungsionalitas itu disediakan oleh goog.dom.query , yang tidak didokumentasikan serta sisa namespace goog.dom.
bkirkbri
8

Saya baru saja memposting artikel yang cukup lengkap tentang Google Penutupan yang menjawab pertanyaan ini di insideRIA .

... Aturan penutupanz! ^ _ ^

Davide Zanotti
sumber
4
Perbandingan to-the-point yang bagus dengan jQuery: "[...] jQuery bekerja dengan sangat baik dan memungkinkan hal-hal besar tanpa usaha dan cepat, jadi" janji "dari Closure bukanlah untuk menawarkan algoritma yang lebih baik tetapi lebih baik, cara terorganisir dan dipelihara untuk menyebarkan aplikasi JavaScript [...] Pengkodean dalam Penutupan berarti berpikir dengan prinsip-prinsip berorientasi objek dalam pikiran, membuat beberapa file js, masing-masing mewakili satu kelas, mengatur arsitektur aplikasi ke dalam paket dan akhirnya menyebarkannya menggunakan alat yang disediakan , mendapatkan file JavaScript tunggal, terkompresi, dan aman [...] "
Alex
7

Mungkin saya tidak mendapatkan jQuery, tapi saya belum melihat koleksi widget UI sebenarnya di sana (ada plugin, ya, tapi Anda tidak pernah tahu seberapa baik mereka diuji dan sering tidak ada pemenang yang jelas dan / atau kekurangan plugin dokumentasi).

Penutupan memiliki, antara lain, koleksi widget (lihat tab demo), termasuk, katakanlah, tombol tanpa bayangan yang digunakan dalam gmail.

Secara umum, ini memiliki lebih banyak fungsi diimplementasikan sebagai bagian dari rilis. Ini mungkin bukan hal yang besar, tapi saya jengkel dengan lautan plugin jQuery ketika saya mencari sesuatu yang sederhana seperti modul sejarah ajax atau autocomplete.

Secara keseluruhan itu adalah perpustakaan besar + set alat dan saya akan berkenalan dengannya hanya untuk mengetahui apa yang tersedia.

Nickolay
sumber
2
jqueryui.com adalah koleksi widget ui resmi
Jourkey
1
ya baik, kalau dilihat dari situs itu memiliki 6 widget: Accordion Datepicker Dialog Progressbar Slider Tabs
Nickolay
3
Saya telah menggunakan jQueryUI dan saya pikir itu sangat lemah. Bahkan hampir tidak terlihat dalam pengembangan. Kapan terakhir kali widget baru ditambahkan. Ini mungkin koleksi widget resmi, tetapi siapa pun yang mencari widget untuk digunakan dengan jQuery lebih baik hanya mencari Google untuk widget jQuery pihak ketiga.
Nosredna
2
jQueryUI bukan hanya satu set widget javascript, ia juga memiliki kerangka kerja css yang bagus. Ini merupakan alat yang hebat bagi saya dalam menata halaman CRUD / admin. Ditambah banyak dari mereka "Widget" Penutupan adalah 1-2 liner di jQuery, bahkan tidak layak untuk menulis plugin.
Jace Rhea
2
Daya tarik JQuery bukan widget yang dibuat sebelumnya. Ini membuat widget khusus Anda sendiri dalam waktu singkat. Saya jarang menyentuh plug-in, termasuk UI.
Erik Reppen
1

Saya menghargai sebagian besar kontribusi Google untuk komunitas open source dan saya yakin itu punya beberapa hal keren tapi secara keseluruhan saya menemukan Penutupan besar, terlalu padat, dan tidak bagus. Jika Anda harus mengubah semuanya menjadi Java, saya kira itu benar-benar keren.

Edit:

Cukup adil. Saya tidak benar-benar membandingkan. Penutupan seperti gudang raksasa dengan setiap alat yang mungkin Anda inginkan berada ... di suatu tempat. Semacam .NET atau perpustakaan Java besar. Setelah Anda menemukan yang Anda butuhkan, Anda dapat menemukan hal-hal yang sangat spesifik yang melakukan pekerjaan yang sangat spesifik. Dan kemudian untuk produksi, Anda dapat menghapus semua cruft.

JQuery di sisi lain, lebih merupakan obeng sonik yang mudah dimodifikasi.

Erik Reppen
sumber
1
Saya ingin mempelajari lebih lanjut tentang versi Java dari Penutupan. Apakah Anda memiliki tautan untuk ini. Terima kasih
Yazz.com
Cari 'tag ironi.' Anda akan menemukan jawabannya di sana.
Erik Reppen
0

Google Closure Library memungkinkan Anda untuk menyusun dan mengoptimalkan JavaScript Anda. Ini bukan perpustakaan seperti jQuery. jQuery adalah sesuatu yang memberi Anda fungsi yang memungkinkan Anda untuk menulis javascript Anda lebih cepat.

Google Closure akan membantu Anda membuat kode javascript sendiri diminimalkan untuk memungkinkan pengiriman lebih cepat melalui Internet.

Singkatnya, Google Closure adalah alat sementara jQuery adalah perpustakaan yang mirip dengan Prototype.

Tereno
sumber
6
Itu tidak sepenuhnya benar. Google Closures juga dilengkapi dengan perpustakaannya sendiri yang mirip dengan jQuery dan yang menyediakan fungsi dan utilitas untuk menulis kode Anda sendiri: code.google.com/closure/library/docs/tutorial.html
Wookai
2
Ah baiklah! Terima kasih telah mengoreksi saya!
Tereno
2
+1 Untuk mencoba membantu :)
Andomar