SORU
19 Mayıs 2011, PERŞEMBE


API tasarım ve jQuery

Genellikle bir WordPress kullanmak zavallı API kararlar olduğunu duydum. Bir WordPress kullanmak en sevdiğim kütüphane olmasa da gelişme olabileceğini sık sık ve zor API içinde belirli hataları işaret buluyorum tasarım ya kullandım kütüphane.

JQuery parçaları API ne daha iyi olabilirdinasılfarklı ve uygulanan olabilir mi ^strong>nedeno farklı bir uygulama daha mı iyi olur?

Soru iki uzanırdüşük düzeyde bireysel ayrıntılarAPI veyüksek düzeyde ayrıntıAPI. Sadece API kusurları bahsediyoruz o zaman hala DOM manipülasyon kütüphane / üst düzey tasarım kusurları seçici bir motor etrafında merkezli değil.

Popüler kütüphaneleri API donma gerekliliği nedeniyle, DV şu andaki durumda kalmış ve geliştiriciler harika bir iş yapıyorsun. Olarak geliştiriciler tasarım kararlarını değiştirmek için esneklik (yazık!) yoktur .attr vs yakın .prop değişim tarafından görülebilir.

Aklıma belirli bir örnek olacaktır

$.each(function(key, val) { })

vs

$.grep(function(val, key) { })

çift parametreleri sık sık kontrol etmek zorundayım o kadar kafa karıştırıcı ki.

Lütfen bir WordPress kullanmak karşılaştırınkütüphanetam teşekküllüçerçeveleridojo ve YUİ ve özellikleri eksikliği hakkında şikayet gibi.

CEVAP
19 Mayıs 2011, PERŞEMBE


  • .load() tamamen farklı bir davranış ile geçirilen bağımsız değişkenler bağlı olarak aşırı yüklendi

  • .toggle() tamamen farklı bir davranış ile geçirilen bağımsız değişkenler bağlı olarak aşırı yüklendi

  • jQuery() işlevi çok aşırı belki.

  • .attr() bahsettiğiniz. Özellikleri ayrım hemen IMO olmalıydı.

  • .map( key,val ) *13 this değerleri farklıdır.

  • standart olmayan seçiciler Cızırtı dışında tutulmuş olmalı IMO. Javascript tabanlı seçici motorları Bir kaç yıl içinde eski haline gelmeli, ve insanların özel seçiciler bağımlısı daha zor bir geçiş olacak

  • zavallı yöntem .closest() .live() gibi yöntemleri adlandırma. Tam olarak ne yapıyorlar?

  • Geçenlerde yeni bir öğe oluşturma width height props argüman üzerinden nitelikler standart ayarlayabilirsiniz olmadığı anlaşıldı. bir WordPress kullanmak yerine width height kendi yöntemleriyle çalışır. IMO, spec öznitelikleri özellikle width height css üzerinden ayarlanabilir beri öncelik olmalıydı.

$('<img/>', { 
    css:{width:100, height:100},
    width:100, // <-- calls method, why?
    height:100, // <-- calls method, why?
});
  • $.get() .get() tamamen farklıdır.

  • .get() .toArray() bağımsız değişken geçen zaman aynıdır

  • toArray() $.makeArray() etkili bir şekilde aynı şeyi yapmak. Neden onları .each() $.each() gibi aynı isim vermedi?

  • iki farklıolay heyetyöntemleri. .delegate() mantıklı ve .live() büyülü< . em ^"Vay be, çok işe yarıyor!"bir.

  • .index() 3 davranışları ile aşırı yüklü, ama farklılıklar kafa karıştırıcı olabilir

 // v---get index   v---from collection (siblings is implied)
$('selector').index();
 // v---from collection   v---get index
$('selector').index(element);
 // v---get index      v---from collection
$('selector').index('selector');

Birincisi eğer sadece ilk öğe üzerinde faaliyet gösteren Hatırlarsanız anlaşılabilir

İkincisi jQuery yöntemleri beri en mantıklıgenellikletüm koleksiyon üzerinde çalışır.

Üçüncüsü ise tamamen kafa karıştırıcı. Yöntem olan seçici belge seçici koleksiyonundan istediğiniz öğeyi temsil eden hiçbir belirti verir.

Neden sadece üçte biri ortadan kaldırmak, ve insanların bu gibi ikinci bir kullanıma sahip değil:

 // v---from collection      v---get index
$('selector').index( $('selector') );

Bu şekilde .index() tüm koleksiyon üzerinde çalıştığı daha yakından jQuery geri kalanı ile uyuyor.

Ya da en azından seçiciler anlam daha uygun ters:

 // v---from collection   v---get index
$('selector').index('selector');

İşte her neyse düşünmek başka.

JQuery olay ile ilgili bazı endişeleri/veri depolama sistemi kullanım var. YANİ diğer unsurları etrafında, bellek sızıntıları oluşturmak kapatabilir on[event] özellikleri işlevleri yerine oturmuyor çünkü övdü. Yerine işleyicileri ve diğer verileri tutan jQuery.cache, bir giriş eşleştiren hafif expando bir özellik, yerleştirir.

O atanan işleyicisi çağırır bir işleyicisi ekler inanıyorum. Ya da onun gibi bir şey.

Sistem ne olursa olsun, hiç fark etmez. Nokta elemanı(ler) ve jQuery.cache arasındaki bağ expando.

Neden bu kadar olay oldu? İyi bir WordPress kullanmak felsefi bir çerçeve değildir; bir kütüphane. Kitaplık olarak kullanmak ya da olumsuz etkileri için endişe olmadan bir WordPress kullanmak fonksiyonları kullanmak gerekir gibi görünüyor. Henüz eğer DOM öğeleri çıkartırken bir WordPress kullanmak dışında giderseniz, expando üzerinden herhangi bir işleyicileri ve diğer veri öğeleri ile ilişkili ve çapraz tarayıcı güzel tam bir bellek sızıntısı yaratmak artık.

Yani, örneğin, el.innerHTML = '' gibi basit bir şey çok tehlikeli olabilir.

jQuery.noConflict() özelliği ile çift bu. Bu geliştiriciler $ genel ad kullanan diğer kütüphaneler jQuery kullanmanıza olanak sağlar. Eğer bu kütüphaneler, bazı unsurları silerse iyi ne? Aynı sorun. Ben kötü bir his var, bu geliştirici kullanması gereken bir kütüphane gibi Prototypejs tarafı boyunca bir WordPress kullanmak muhtemelen bilmiyor yeterince JavaScript için iyi tasarım kararları, ve tabi olacaktır böyle bir sorun yaşadım nitelendirdi.


Kütüphane amaçlanan felsefe, bildiğim kadarıyla içinde gelişmeler açısından, kendi felsefesi "daha fazlasını Yapın, daha az yazma" falan. Onlar çok iyi yapmak düşünüyorum. Muazzam bir çalışmanın ürünü yapacak çok özlü henüz etkileyici bir kod yazabilirsiniz.

Bu çok güzel olsa da, bir şekilde bir olumsuz bir şey olarak düşünüyorum. Bu kadarını yapabilirsin, kolay, yeni başlayanlar için çok kötü bir kod yazmak çok kolaydır. Eğer bir "" kütüphane. kötüye kullanma, günlüğe uyarıları geliştirici inşa edilmiş olursa bence iyi olur

Yaygın bir örnek, bir döngü içinde bir seçici çalışıyor. DOM seçimi sadece eğer sen seçici koştu bile seçici bir eleman ihtiyacı her zaman çalıştırabilirsiniz gibi görünüyor bunu yapmak çok kolay. jQuery() fonksiyon seçici tekrarlanan kullanır günlük olur, ve bir konsol ver bence bir gelişme seçici önbelleğe alınabilir unutmayın.

Bir WordPress kullanmak çok baskın olduğu için, onlar sadece kolay JavaScript/DOM bir programcı olmak için yapılmış, ama aynı zamanda daha iyi biri yardımcı olursa iyi olur diye düşünüyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • celebrateubuntu

    celebrateubu

    23 Mayıs 2011
  • Jorrit Jongma

    Jorrit Jongm

    17 Ocak 2008
  • Rayone GB

    Rayone GB

    14 Temmuz 2007