Tarayıcılarda neden jQuery yüklü değil?


19

Birkaç web sitemde jQuery kullanıyorum ve bunu sunmak için bir CDN kullanmamıza rağmen, ziyaretçinin her seferinde jQuery'i indirmesi mantıklı değil. jQuery dünyanın en yaygın kullanılan JavaScript çerçevesi olmalıdır - tarayıcıların varsayılan olarak yüklemiş olması daha mantıklı olmaz mıydı?

Bu şekilde günde milyonlarca kez jQuery'nin indirilmesi önlenebilir. Ya insanların kendi web sitelerinden ya da CDN'lerden.

Gerçekten ihtiyaç duyulacak olan tek şey if ifadesi gibi:

 <!--[if jQuery gt 11]>

Kullanıcıların önbelleklerinde başka bir siteden zaten jQuery varsa, kullanıcıların CDN'ye yolculuk yapmalarını engellememe yardımcı olacak bir şey var mı?


3
soru şu: bir kullanıcının zaten sahip olduğu bir şey için neden sitelerden veya CDN'lerden yeni indirmeler yapması gerekiyor? jQuery birçok konumdan ve birçok versiyonda sunulur. Sayfa hızı ve kullanıcıların (özellikle mobil) bant genişliği konusunda endişeliyim. Bir kütüphane için altın bir standart varsa - neden kullanmıyorsunuz? Emin başka örnekler var ve ben de kabul ediyorum - onlar için kabul edilmiş bir standart olduğu sürece (sürüm numarası gibi).
user1914292

27
Neden jQuery ama Açısal değil, MooTools, Alt çizgi, ...? Ve her birinin hangi versiyonları? Tarayıcılar, şimdiye kadar yapılmış her JavaScript kütüphanesinin kopyalarını içermeli mi?
user253751

15
"Maalesef, tarayıcınızın 0,1 daha yüksek bir sürümüne geçene kadar web sitemi kullanamazsınız"
VLAZ


4
bunun için önbellekleme yapılır. aksi takdirde, sürüm işleme temel olarak imkansız olurdu
njzk2

Yanıtlar:


55

JQuery'ye Google'ın Barındırılan Kitaplıkları veya cdnjs gibi popüler bir CDN'den hizmet verirseniz, ziyaretçiniz aynı kaynaktan gelen bir sitede bulunuyorsa (önbelleğe alınan sürümün süresi dolmadığı sürece) yeniden indirilmez .

jQuery, tam da söylediğin gibi popüler bir kütüphanedir, ancak tarayıcıyla birlikte paketlenmesinin birkaç nedenden dolayı gerçekleşmesi olası değildir:

  1. jQuery nispeten küçüktür (bazen Flash gibi tarayıcılarda paketlenmiş kitaplıklarla karşılaştırıldığında). Ortalama sitedeki en büyük performans darboğazlarının jQuery indirilmesi muhtemel değildir.
  2. JavaScript / ECMAScript'teki iyileştirmeler, geliştiricilerin giderek artan bir şekilde jQuery'ye bağımlı olmaları gerekmediği anlamına gelir. (Bkz. Youmightnotneedjquery.com .)
  3. Çok sayıda popüler JavaScript kütüphanesi var. Tarayıcılar, JavaScript kodu için depo olarak tasarlanmamıştır. Komut dosyası popülaritesini izlemek, daha az popüler kütüphaneleri bırakmak ve her şeyi güncel tutmak, tek tek sitelerin web geliştiricilerine bırakılabilir.

Bunu anlıyorum, ama şimdi code.jquery.com'u CDN olarak kullanıyorum. Ancak, başka bir web sitesi googleapis veya cdjns kullandığında, tarayıcı diğer CDN'den jQuery indirir. Bu sadece mantıklı değil ve her yerde çok fazla zaman / bant genişliği maliyeti. Çoğu durumda insanların jQuery1.7 + gibi bir şey istediklerini eklerseniz, daha da kötüleşir. Tarayıcıların veri havuzu olmadığı konusundaki görüşünüzü anlıyorum, ancak bir çeşit 'birden çok kaynaktan önbellek' kuralı bulamaz mıyız?
user1914292

24
@ user1914292 Bu, yalnızca tüm tarayıcılarda var olan jQuery'nin tüm sürümleri varsa ve önbelleğe alınan sürümle değiştirilerek bilinen herhangi bir jQuery kaynağına yönelik herhangi bir istek kesilirse yararlı olacaktır. Küçük bir fark olsa bile, hata ayıklaması imkansız olan hatalara neden olabilir. Bu, web önbelleğe almanın işe yaradığı ve onlarca yıldır çalıştığı gerçeğiyle daha da kötüleşir . Tarayıcınız bu jQuery isteklerini önbelleğe alan tek şey değildir - tarayıcınıza giden yönlendiricilerin çoğu aynı şeyi yapar. Bant genişliği sorun, uzun zaman önce çözüldü yaptım :) olsun
Luaan

4) Belirli bir sitedeki jquery kodu, son güncellemede temelde değiştirilen bir işleve bağlıysa ve kodun yapmasını beklediği şey artık olmazsa ne olur?
Shadur

1
@Ejay no, bir izleme mekanizması olarak çalışmaz, çünkü isteğin tarayıcı önbelleğinden% 99 oranında sunulduğu.
suriv

1
@BenSteward Evet, tarayıcınızın geliştirme araçlarını kullanın ve Ağ panelini kontrol edin . Örneğin Chrome, "boyut" sütununda "disk önbelleği" veya "bellek önbelleği" ile önbelleğe alınmış kaynakları ve "durum" sütununda gölgeli bir değeri gösterir ("Önbelleği devre dışı bırak (DevTools sırasında) açık) ”olarak ayarlayabilir). Önbellek kontrolü üstbilgilerine ve önbelleğe alınan ve ne kadar süre ile ilgili diğer faktörlere bağlı olabilir. developer.mozilla.org/tr-TR/docs/Web/HTTP/Caching
Nick

21

JQuery sadece popüler JS kütüphanesi değil, aynı zamanda bir tarayıcının potansiyel olarak birden fazla sürüm içermesi gerekir. Google CDN şu anda listelenmektedir: jQuery 42 versiyonlarını; JQuery UI'nin 44 sürümü; JQuery Mobile'ın 6 sürümü.

Web geliştiricilerine, web sitelerinin gereksinimlerine göre bir kitaplığın hangi sürümünün indirileceğini tanımlamalarını sağlamak daha iyidir. Web sitenizde jQuery'nin güncel bir üretim sürümünü kullanır ve daha popüler bir CDN'den yüklerseniz, ziyaretçilerinizin zaten önbelleğe alınmış olma şansı vardır.


14

Tarayıcı, aracınıza ne tür yakıt ve ekstra parçalar koyacağınızı ve sizin için dahil edeceğinizi bulmak, motor tasarımcısının görevi değildir. Yapacaklarsa bu tarayıcılar büyük bir bloatware olurdu çünkü bir sonraki soru "neden sadece jQuery?" Olacak ve sonunda bağımlılık depolarını koruyacağız.

Ayrıca, tüm sürümleri içerecek miyiz? Birisi özel bir sürüm kullanmak isterse ne olur? Ya birisi bu kütüphaneyi kullanmak istemezse? En son sürümleri ne sıklıkla birleştirecek ve yuvarlayacaklar? Farklı versiyonlu jQuerys ile farklı tarayıcılarla sonuçlanacak mıyız? Standartlaştırılmış HTML, CSS ve JavaScript işlevlerini eşit şekilde uygulayamazlar. Tarayıcı koruyucularından biri bir kütüphane veya belirli bir sürümünü içermeyecekse ne olur?

Tarayıcılar, henüz tamamlanmamış bir çözüm oluşturmamanız için yapı taşları ve ortam sağlar.

JQuery'i tarayıcıya koymak, sitenizi inanılmaz derecede hızlı hale getirmeyecektir, çünkü günümüzde bu en büyük darboğaz değildir, ancak jQuery'nin gereksiz derecede büyük bir kütüphane olduğunu kabul edebiliriz, ancak amacı asla hızlı bir kütüphane olmamalıdır ( Bant genişliği). Hızlı yükleme ve Zepto gibi hafif olmaları için özel olarak tasarlanmış birçok kütüphane daha bulunmaktadır .

Gerçekten jQuery'nin boyut ve bant genişliği kullanımı ile ilgileniyorsanız, kullanmayın. Hiç Vanilla JS'yi duydun mu? JQuery'nin kendisi dahil neredeyse herkes tarafından tam anlamıyla kullanılan daha popüler bir kütüphanedir ! Ve zaten her tarayıcıya dahil olduğu için hayalinizi gerçekleştirdi!


2

JQuery gibi bir kitaplık kullanmanın bir nedeni uyumluluktur.

Tarayıcılar daha standartlara uygun hale geldi, ancak jquery kitaplığını kullanarak kendinize tedarik edersiniz, tarayıcı aileleri ve sürümleri arasındaki farklar hakkında endişelenmenize gerek yoktur.

Jquery'yi kendiniz tedarik ederek, tutarlı bir API'ye sahip olduğunuzdan emin olabilirsiniz.

Tarayıcıda yerleşik jquery varsa, kullanıcının hangi sürüme sahip olduğunu kontrol etmeniz gerekir ve tekrar tarayıcılara giriyoruz ve "Bu site en iyi şekilde görüntüleniyor ..."

Yani jquery tarayıcı içine inşa etmek mantıklı değil.

Ayrıca, önbellekleme çalışır, bu nedenle kullanıcı zaten jquery sürümünüz olmasa bile, yalnızca bir kez indirilmesi gerekir.


-3

Aslında buradaki yanıt verenler, sorunun cevabının tarayıcıların istemci tarafında en çok kullanılan kütüphaneleri ve çoklu dolgular vb.

Soruyu soran kişinin belirttiği gibi, jquery içermeyen tarayıcılar kullananlara uygun bir sürümün sunulmasını sağlamak için koşullu yorumlar kullanılabilir.

Jquery ayrıca, yeni bir kütüphane indirmeden eski bir jquery kütüphanesinin paketlenmiş bir sürümüne sahip birine retro destek vermek için geçiş yoluyla kendi geriye dönük uyumluluk desteğini de içeriyor.

Bunları tarayıcılara dahil etme argümanı sadece kullanıcı deneyimi ve maliyetle ilgili değil, aynı zamanda üzerinde yaşadığımız gezegenle de ilgili olacaktır. Verilerin kullanımı küresel kirliliğe büyük katkı sağlıyor ve gereksiz veri aktarımının asgariye indirilmesini sağlamak karbon ayak izimiz üzerinde önemli bir etkiye sahip olabilir.

Aslında, paketlenmiş bir tarayıcıya birkaç megabaytlık kod bloat eklemek için - aynı veriler günde milyarlarca kez gereksiz yere işleniyor.

Bu, internetteki herkes için kullanıcı deneyimini kötüleştirir. Ve büyük işletmelere büyük miktarda para maliyeti.

Bir geliştirici olarak sadece IE vb için yaptığımız gibi gerekli gerekli yedekleri oluşturacaksınız, bu yüzden sorun nedir - muhtemelen mutlaka dahil edilmelidir?


1
Bu soruya teğettir. Soru, "neden tarayıcılar yapmıyorum ve bu konuda ne yapabilirim", "neden tarayıcılar yapmamalı" sorusu.
Stephen Ostermiller

OP, noktanızı düşünürken, çerçeve tarayıcıların önbelleğinde zaten başka bir siteden bile mevcutsa, CDN'ye giden trafiği azaltmakla ilgileniyor. Şahsen, çerçeveye referans vermek için ortak bir yol olmadığı sürece nasıl göremiyorum.
closetnoc

Çoğu kişi, sorunun en ilgili cevabını da söyleyemedi ve bu jQuery bir web standardı değil ve tarayıcılar sadece yavaş değişen ve temellere dayanan web standartlarını çalıştırıyor. jQuery başlangıçta temeller tarayıcılar arasında tutarlı bir şekilde çalışmak için oluşturuldu, bu nedenle jQuery dahil tarayıcıları düzeltmek için bir yama eklemek gibi ama tarayıcılar zaten kendilerini düzeltmek. Zaten jQuery kullanımının azalmış kullanımını, günümüzde pek çok "jQuery'ye ihtiyacınız yok" makalesi tarafından kısmen kanıtlanmış olarak görüyoruz.
Rob

Stephen. Quesiton "neden tarayıcı yapmıyorum ve bu konuda ne yapabilirim" değildir. Bu sizin rehash'ınız. Soru neden olmasın ve bunu soran kişi açıkça bunu yapmanın ve ortaya çıkan sorunlarla başa çıkmak için yeni bir çerçeve oluşturmanın tüm web kullanıcıları için büyük bir potansiyel fayda sağlayacağını açıkça belirtiyor.
Andy Bbop

Hepiniz modası geçmiş önyargılarınızı savunmayı bırakmalı ve hala öğrenebileceğinizi kabul etmelisiniz. Oh, ve aslında bir şeyler okumayı da öğren. #Silahlar. "OP, sizin açınızdan düşünürken, CDN'ye giden trafiği azaltmakla ilgileniyor". Hayır, ister istemci tarafında ister CDN'de huges miktarda bant genişliği tasarrufu sağlayabileceğini söylüyor. Efing direğini okuyun.
Andy Bbop
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.