Google Kapanış Kitaplığı jQuery üzerinden neler sunuyor? [kapalı]


190

Düşünen

  • Iş geçmişi
  • topluluk desteği
  • kullanılabilir uzantılar
  • varsayılan özellik kümesi
  • kullanım kolaylığı
  • ve güvenilirlik

neden birini diğerine tercih ediyorsun?


1
İnsanların uygulamaları denemeye ve kapanma sınırlarının ne olduğunu görene kadar birinin neden diğerine tercih edildiğini söylemek zor olacak.
James Black

3
Burada bazı sözdizimi karşılaştırmaları: derekslager.com/blog/posts/2010/06/…
user194743

4
Bu makale karara yardımcı olabilir. Anahtar ders: “Kapanış bir ekosistemdir. DOM'a erişmeyi veya manipüle etmeyi kolaylaştırmak için sadece burada ve orada kullandığınız jQuery gibi değildir. Closure'u gerçekten kullanmak istiyorsanız, onu gerçekten kullanmak için bir taahhütte bulunmalısınız. ”
Dan Abramov

2019 Google kapatma nedir? : D
evilReiko

Yanıtlar:


176

Bilgi parçamı eklemeye çalışacağım.

Başka bir JS lib'den daha fazlası

Anladığım kadarıyla, Google Closure sadece başka bir JS kütüphanesi değil, aynı zamanda JS kodunuzu optimize etmenizi sağlayacak bir dizi araçtır. JQuery ile çalışmak size iyi araçlar ve hafif bir kütüphane sağlar, ancak kendi kodunuzu küçültmez. Kapatma derleyici olacak. Kapatma denetçisi bazen küçültülmüş kod orijinal farklı bir davranış vardır ve ayıklamak için bir ağrı olduğu gibi, aynı zamanda, faydalı olabilir. Günümüzde hem geliştiricilerin en iyi arkadaşları olan Firebug ve destek birimi testleri ile entegre oluyor .

belgeleme

Herhangi bir yeni kütüphane VS iyi kurulmuş bir kitap olarak, jQuery sahip uzantıları ve öğretici ton kullanılabilirliği eksikliği sanırım. Bununla birlikte, Google tarafından zorlanmak, destek ve güvenilirliğin hem oldukça iyi olmasını sağlayacaktır. Mevcut belgeler ve öğreticiler de gerçekten iyi görünüyor.

Özellikleri

Yine de Closure'un özellikleri iyi görünüyor ve modüler mimarisi de umut verici. Sanırım Google onu uzun zamandır dahili olarak kullanıyor, yani tüm temel özelliklerin (ve daha fazlasının) ve muhtemelen çok optimize edilmiş ve ölçeklenebilir bir şekilde uygulanmasını bekleyebilirsiniz. JavaScript'in STL'si olarak sunmaya çalışıyorlar, bu yüzden cilalamalılardı.

Özelliklere daha yakından baktıktan sonra, bu, jQuery olarak mevcut kütüphanelere kıyasla web uygulamaları geliştirme için bir adım olabilir. Google'daki dahili gelişmelere fayda sağladığını, ancak çevrimiçi durumu ( goog.events.OnlineHandler'a bakın ), AJAX isteklerinin ve JS işlemlerinin tarayıcı geçmişine kolay entegrasyonunu ( goog.History'ye bakın ) veya harika widget'ların lejyonları gibi şeylere fayda sağladığını tahmin ediyor. sağlarlar (bkz. goog.ui paketi ) daha da harika webappsler inşa etmemize yardımcı olabilir;)!

Java ile entegre olan şablon özellikleri ile birlikte gelir (kim GWT dedi ?), Bu da Kapatma için başka bir artı olabilir.

Kullanım kolaylığı

Son olarak, kullanımı oldukça basit görünüyor. Sözdizimi, kısa $ jQuery işlevinden biraz daha ayrıntılı olabilir, ancak IDE'ler ve otomatik tamamlama ile bu gerçek bir sorun değildir. Dahası, Google'dan gelen Eclipse gibi IDE'lerde iyi bir entegrasyon beklediğimizi söyleyebilirim.

EDIT: istendiği gibi, GWT referansı hakkında birkaç kelime söyleyeyim. Google Web Toolkit, AJAX etkin web arayüzleri oluşturmaya izin veren ve gerekli JavaScript kodunu üreten (ve optimize eden) bir Java kütüphanesidir. Google Closure, hem istemci hem de sunucu tarafı (JavaScript ve Java kullanarak) kullanılabilecek Şablonlar oluşturmaya izin verdiğinden, tahminim yakında bunları birlikte kullanmak mümkün olacaktır (zaten değilse).


5
Ayrıntılı ve anlamlı cevap, teşekkür ederim. GWT'ye yapılan bu referansın ne anlama geldiğini açıklar mısınız? Korkarým anlamadým.
pestaa

1
Bence "Daha fazla" bölümünüzdeki şablon kütüphanesinden (Soya) bahsetmelisiniz. Aynı şablon dosyası hem sunucu (Java) tarafında hem de istemci tarafında kullanılabilir. Gerçekten güzel bir uygulama IMO. JSON'u HTML göndermek yerine AJAX sorgularında gönderebileceğimiz anlamına gelir - bant genişliği tasarrufu sağlar.
Frank Krueger

1
Sadece Kapatma karşı eleştiri keşfetti, ama belki de bu sadece FUD: sitepoint.com/blogs/2009/11/12/...
nalply

7
Eleştiri FUD değil ve bağlantı için teşekkürler. Eleştiri, javascript kodunun her yerde nasıl optimum olmadığına odaklanmıştır. Bu geçerli olabilir, ancak daha büyük noktayı kaçırır. Anladığım kadarıyla, Closure gerçekten karmaşık JS uygulamalarını (GMail ölçeğinde) hedefliyor ve bunun bazı sonuçları var - her satır tek bir parlak kodlayıcı tarafından yazılmadığından, her satırın optimal olmaması gibi. Ancak bunun tersine bir yazılım mühendisliği çerçevesi olarak daha da ölçeklenebilir.
Peter S Magnusson

3
@nalpy Bu makalenin önerdiği gibi, bu makalede, bu kodlama sorunlarını optimize edebilen bir COMPILER (bir küçültücü değil) bahsetmedi.
Karınca

30

API'ye kısa bakışımda jQuery ve Closure arasındaki farkları çarpıcı buluyorum.

jQuery temel olarak çapraz işlemleri bir çok sık işlem yapmak için basitleştirilmiş bir yoludur.

Kapatma, <canvas>örneğin etiketi kullanmak için tarayıcılar arası bir yol sağladıkları ve yeni etkinlikler ekledikleri için çok yeni bir çerçevedir .

Bu, genellikle javascript ile yaptığımız şeyleri ekliyor, insanların yapmak istediği birçok işlemi alıyor ve bunları API'ye koyuyorlar.

Örneğin, çevrimiçi durumun değişip değişmediğini anlatacak bir olayları var. Böylece sistemin çevrimiçi olup olmadığını anlayabilirsiniz.

Javascript ile yapılabilecekleri genişlettikleri gerçeğiyle devam eden Google Gears gibi araçları kullanan javascript işlevlerine sahiptirler.

Tüm değişiklikleri sindirmek bana birkaç gün sürecek, ancak bunun geliştirilebilecek web uygulamaları üzerinde büyük bir etkisi olabileceğini görebiliyorum.


25

Closure Library'nin en büyük avantajı Closure Compiler için tasarlanmış olmasıdır. Bu, JavaScript geliştirme için tamamen yeni olasılıklar açar ...

Derleyicinin birkaç harika özelliği vardır:

  • Okunabilir JavaScript'i makine tarafından okunabilen sıkıştırılmış JavaScript'e derler - "GELİŞMİŞ" modunda en iyi sıkıştırma oranına sahiptir .
  • Kodun JSDoc Etiketleri ile belgelenmesi önemlidir: derleyici bunu okur ve dokümantasyondaki yazım hataları için derleme sırasında uyarılar alırsınız, bir @yapıcı yanlış kullanımı , bir değişkenin yanlış türü, @private ve @protected ile açıklanan bir alanın yanlış kullanımı, vb.
  • OpenLayers veya Google Maps gibi yeniden kullanılabilir bir JavaScript kitaplığı yazarsanız, genel API'nizi resmi olarak dışa aktarırsınız ve derleyici dahili kodunuzu optimize eder.
  • Son uygulamalar kütüphane ile birlikte derlenebilir ve daha sonra kütüphanenin kullanılmayan kısımları üretilen koddan kaldırılır. Bağımlılıklar derleyici tarafından otomatik olarak çözülür.
  • Derleyici, istenmeyen işlevleri kaldırmak için sabitleri kabul eder - bu, yalnızca Mobil WebKit gibi belirli tarayıcılar için, Quirks modundan veya Katı moddan yalnızca biri için derleme, IE6 desteği olmadan derleme vb.
  • FireBug ile hata ayıklama, kaynak kodun derlenmiş sürümü için bile mümkündür.
  • Derleyici, son uygulamanın yüklenmesini önemli ölçüde hızlandırabilen dinamik olarak yüklenebilir modüllerin oluşturulmasını destekler, çünkü gelişmiş işlevsellik kodu yalnızca gerektiğinde yüklenebilir.

Ayrıntılar için: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html


20

Düzenleme : Google Closure ile ilgili bazı soruları daha iyi yanıtlayabilen bu youtube videosuna göz atın .

Google'ın kapanmasıyla ilgili muhtemelen en iyi bilgi kaynakları, proje tartışma grubu , wiki, doc sayfaları, demolar ve henüz safari kitapları sitesinden edinilebilen Michael Bolin tarafından tamamlanmamış bir kitap .

hemen söyleyebileceğim bir şey var - closurevs için daha dik bir öğrenme eğrisi var, jQueryancak kütüphanenin genişliği, açık organizasyonu ve derleyici ve şablon aracıyla birlikte kullanmanın yararı nedeniyle buna değebilir.

closureMichael Bolin'e göre bu açıdan kütüphane daha dojoçok jQueryve bazı kavramlardan ödünç alındı dojo.

google closure derleyici JSDocaynı anda (programcı tarafından doğru bir şekilde oluşturulduysa) dokümantasyon sağlayan ve derleme zamanında birçok hatayı yakalamayı sağlayan dokümantasyon sistemini kullanır .

işlev adları jQuery's'den daha ayrıntılı olsa da , derleyici kodu daraltır (çeşitli optimizasyon taktikleri kullanarak) ve tür denetimi kod hatalarını ayıklamak için önemli bir zaman kazandıracaktır, bu nedenle daha uzun adlarda zaman yazmak büyük olasılıkla bir sorun değildir. Aynı zamanda daha uzun isimler okunabilirlik sağlar.

kütüphane, tuhaflıklar modunda çalışan tarayıcıları destekler, böylece komut dosyaları "ilginç" html kullanan diğer siteler tarafından gömülebilir

kütüphane, soybelgelerin içerikle doldurulmasını kolaylaştıran bir javascript şablonlama sistemi ile çalışır (ancak bunlara bağlı değildir) .

jQuerygoogle gibi closure, kütüphanenin özel bir bileşenini kullanarak dize tabanlı sorgular ile dom yapısında gezinmeye izin verir.

closurekütüphane, sınırlandırılmış ad alanlarına daha Javaçok benzer şekilde bağlıdır - çok güçlü bir kurumsal özellik.

bu tür ad alanlarının kullanılması derlenmemiş kodda ek yüke neden olur, ancak derlenmiş kodda bu değişkenler kısa değişken adlarıyla değiştirilir.


1
Ben başka bir şey arıyordum ve burada sona erdi, ama iyi bilmek like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.beni bununla ilgili bazı belgelere bağlayabilir misiniz?
IsmailS

@iSid: Ben onun hakkında konuşuyor inanıyorum goog.dom.DomHelper, ama şahsen jQuery eşdeğer bir sorgu işlevi görmüyorum. @Evgeny: Bize daha fazla ayrıntı verebilir misiniz?
exhuma

@ iSid: Bu işlevsellik, goog.dom.query tarafından sağlanır ve bu da goog.dom ad alanının geri kalanıyla birlikte belgelenmez.
bkirkbri

8

Google Closure hakkında bu soruyu insideRIA'da yanıtlayan oldukça ayrıntılı bir makale yayınladım .

... Kapanış rulez! ^ _ ^


4
JQuery ile güzel bir karşılaştırma: "[...] jQuery gerçekten iyi çalışıyor ve çaba harcamadan ve hızlı bir şekilde harika şeyler yapabiliyor, bu yüzden Kapanış'ın" vaadi "daha iyi algoritmalar sunmak değil, daha iyi, JavaScript uygulamalarını dağıtmanın düzenli ve sürdürülebilir bir yolu [...] Kapatma Kodlaması, nesne yönelimli ilkeleri göz önünde bulundurarak düşünmek, her biri tek bir sınıfı temsil eden birkaç js dosyası oluşturmak, uygulama mimarisini paketler halinde düzenlemek ve son olarak sağlanan araçları kullanarak dağıtmak anlamına gelir , tek, sıkıştırılmış ve güvenli bir JavaScript dosyası edinme [...] "
Alex

7

Belki jQuery almıyorum, ama orada gerçek bir UI widget koleksiyonu görmedim (eklentiler var, evet, ama ne kadar iyi test edildiğini asla bilemezsiniz ve genellikle net bir kazanan ve / veya eklenti eksikliği yoktur dokümantasyon).

Kapatma, diğer şeylerin yanı sıra , gmail'de kullanılan imageless düğmeleri de dahil olmak üzere bir widget koleksiyonuna (demolar sekmesine bakın) sahiptir .

Daha genel olarak, sürümün bir parçası olarak uygulanan daha fazla işlevselliğe sahiptir. Büyük bir şey olmayabilir, ama ajax geçmişi modülü veya otomatik tamamlama kadar basit bir şey ararken jQuery eklentilerinin denizi rahatsız oluyor.

Genel olarak büyük bir kütüphane + araç seti ve sadece neyin mevcut olduğunu bilmek için onunla tanışacağım.


2
jqueryui.com resmi UI widget koleksiyonu
Jourkey

1
evet iyi, siteden bakıldığında 6 widget var: Akordeon Datepicker Dialog İlerleme
Çubuğu

3
JQueryUI kullandım ve çok zayıf olduğunu düşündüm. Hatta geliştirme aşamasında bile görünmüyor. En son ne zaman yeni bir widget eklendi. Resmi widget koleksiyonu olabilir, ancak jQuery ile kullanmak için bir widget arayan herkes sadece üçüncü taraf jQuery widget'ları için googling daha iyidir.
Nosredna

2
jQueryUI sadece javascript widget'ları değil, aynı zamanda harika bir css çerçevesine sahiptir. CRUD / admin sayfalarını şekillendirmede benim için harika bir araç oldu. Artı bu Kapatma "Widget" çoğu jQuery 1-2 gömlekleri, hatta bir eklenti yazmaya değer değil.
Jace Rhea

2
JQuery'nin cazibesi önceden hazırlanmış widget'lar değildir. Rekor sürede kendi özel widget'larınızı yapıyor. Kullanıcı arayüzü dahil eklentilere nadiren dokunuyorum.
Erik Reppen

1

Google'ın açık kaynak topluluğuna yaptığı katkıların çoğunu takdir ediyorum ve eminim bazı harika şeyler var ama genel olarak Closure'u hantal, aşırı ve yetersiz buluyorum. Her şeyi Java'ya dönüştürmeniz gerekiyorsa, bunun düpedüz spiffy olduğunu düşünüyorum.

Düzenle:

Yeterince adil. Gerçekten karşılaştırmadım. Kapanış, muhtemelen bir yerde bulunmasını isteyebileceğiniz her araçla dev bir depo gibidir. .NET veya büyük bir Java kütüphanesi gibi. İhtiyacınız olanı bulduğunuzda, son derece spesifik işler yapan son derece spesifik şeyler bulabilirsiniz. Ve sonra üretim için tüm rüzgarı kaldırabilirsiniz.

Öte yandan JQuery, daha kolay değiştirilebilen bir sonik tornavida.


1
Closure'un Java sürümü hakkında daha fazla bilgi edinmek istiyorum. Bunun için bir bağlantınız var mı? Teşekkürler
Yazz.com

'İroni etiketler' konusuna bakın. Cevabı orada bulacaksınız.
Erik Reppen

0

Google Kapanış Kütüphanesi, JavaScript'inizi derlemenize ve optimize etmenize olanak tanır. JQuery gibi bir kütüphane değil. jQuery, kendi javascriptinizi daha hızlı yazmanıza izin veren işlevler sağlayan bir şeydir.

Google Closure, İnternet üzerinden daha hızlı bir dağıtım sağlamak için kendi javascript kodunuzu küçültmenize yardımcı olur.

Uzun lafın kısası, Google Closure bir araçtır, jQuery ise Prototip'e benzer bir kütüphanedir.


6
Bu tam olarak doğru değil. Google Closures ayrıca
jQuery'ye benzeyen

2
Ah tamam! Beni düzelttiğin için teşekkürler!
Tereno

2
+1
Yardımcı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.