SORU
13 Mart 2012, Salı


Veri bağlama Nasıl çalışır?AngularJS :

Nasıl veri bağlama AngularJS çerçevesinde çalışır?

their site Teknik detay bulamadım. Veri modeli görünümünden yayılır nasıl daha fazla veya daha az açık. Ama nasıl AngularJS belirleyiciler ve alıcılar olmadan model özellikleri değişiklikleri izlemek mi? Bu işi yapmak olabilir JavaScript watchers olduğunu buldum. Ama Internet Explorer 6 Internet Explorer 7 desteklenmez. Nasıl AngularJS örneğin değiştirdim o biliyor mu?:

myobject.myproperty="new value";

ve bu görünüm değişikliği yansıtıyor?

CEVAP
13 Mart 2012, Salı


AngularJS değerini hatırlar ve bir önceki değer ile karşılaştırır. Bu temel pis denetliyor. Eğer değer bir değişiklik varsa, o zaman değiştirme olayı tetikler.

AngularJS bir dünyaya olmayan AngularJS bir dünyaya geçiş zaman diyoruz $apply() yöntem $digest() der. Bir özet sadece düz eski kirli denetliyor. Tüm tarayıcılar üzerinde çalışıyor ve tamamen tahmin edilebilir.

Aksine kirli denetimi (AngularJS) vs değiştirmek dinleyici (KnockoutJS Backbone.js): Süre kirli denetimi olabilir gibi basit, ve hatta verimsiz (ben bu adresi daha sonra), bu çıkıyor bu anlamsal olarak doğru her zaman değişiklik olsa, dinleyicileri çok garip köşe davalar ve lazım olan şeyler gibi bağımlılık izleme yapmak daha anlamsal olarak doğru. KnockoutJS bağımlılığı izleme AngularJS olmayan bir sorun için zekice bir özelliktir.

Değişim dinleyicileri ile ilgili sorunlar:

  • Sözdizimi kötüdür, tarayıcılar desteklemez, çünkü doğal. Evet, vekiller var, ama anlamsal olarak her durumda doğru, ve elbette eski tarayıcılarda hiçbir yakınlık değildir. Alt satırında kirli-kontrol KnockoutJS ve backbone.js onların sınıfları, miras ve veri erişimi set üzerinden zorlamak ise POJO, yapmanızı sağlar.
  • Beraberlik değiştirin. Öğeleri bir dizi olduğunu varsayalım. UI kılan, her zaman değiştirmek ateş olayları siz ekleyin eklemek için döngü gibi bir diziye öğeler eklemek için. Bu performans için çok kötü. Ne istediğinizi UI sadece bir kez, sonunda güncelleme için. Olaylar çok ince taneli değiştirin.
  • Dinleyiciler değiştirmek dinleyici daha fazla değişiklik olaylar, yangınlar, verileri değiştirebilir beri hemen bir sorun olan bir pasör, ateş, değiştirin. Bu yığın üzerinde birkaç değişiklik olaylar oluyor bir anda sahip olduğu kötü. Sebebi ne olursa olsun eşitlenmesi gereken iki dizi olduğunu varsayalım. Sadece biri ya da diğeri için ekleyebilirsiniz, ama eklemek her zaman dünyanın şimdi tutarsız bir manzaraya sahip değiştirmek bir olay, ateş. Bu tamamlanması için her bir geri arama sadece yürütür beri kaçınan parçacığı kilitleme, ve çok benzer bir sorundur. Değişim olayları belirleyiciler üzerinde iplik sorun oluşturan daha uygun değildir, hangi sonuçlara ulaşmak ve belirsiz, yine olabilir, çünkü bu ara. Bu çıkıyor ne istediğin için gecikme dinleyici yürütme ve garanti, sadece bir dinleyici olarak çalışır, bu nedenle herhangi bir kod ücretsiz değişiklik veri, ve bunu bilen başka kod çalışırken bunu yapıyor.

Ne performansı hakkında?

Yavaş olduğunu görünebilir, kirli denetimi yetersiz olduğu için. Bu gerçek sayılara bakmak yerine, sadece teorik argümanlar var, ama önce bazı kısıtlamaları tanımlamak izin vermemiz gerekir.

İnsanlar vardır:

  • Yavaş— Bir şey 50 ms daha hızlı insanlar algılanamaz ve bu nedenle olarak kabul edilebilir "". anlık

  • Sınırlı— Gerçekten tek bir sayfada bir insan için bilgi yaklaşık 2000'den fazla parça gösteremezsiniz. Bundan fazlası gerçekten kötü UI, ve insanlar zaten bu işlem.

Asıl soru şu olacak: Kaç karşılaştırmalar 50 ms bir tarayıcı yapabilir misiniz? Bu birçok faktör devreye girer, ama burada bir test olduğu gibi cevaplanması zor bir soru: 10,000 gözlemcileri yaratır http://jsperf.com/angularjs-digest/6. Modern bir tarayıcı üzerinde bu sadece altında 6 ms alır. Internet Explorer 8 40 ms sürer. Gördüğünüz gibi, bu bile yavaş tarayıcıları, bu günlerde bir sorun değildir. Bir uyarı: Bu karşılaştırmalar yapmak basit sığmayacak zaman sınırı... ne yazık ki bu çok kolay Ekle yavaş bir karşılaştırma içine AngularJS, çok kolay kullanım için inşa yavaş uygulamalar bilemezsin ne yapıyorsun. Ama yavaş karşılaştırmalar size gösterecek gereçleri modülü, sağlayarak bir cevap bekliyoruz.

Video oyunları ve GPU tutarlı çünkü kirli-kontrol yaklaşımı, özel olarak çıkıyor. Sürece onlar, monitörün yenileme hızı (genellikle 50-60 hz, veya her 16.6-20 ms), herhangi bir performans üzerinde böyle bir atık, bu yüzden siz en iyisi çizim daha fazla şeyler, daha yüksek FPS alıyorum.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • LAHWF

    LAHWF

    5 Kasım 2009