2011-02-24 39 views
40

RxJs ve Knockout arasındaki farkları bilen var mı? Yüzeyde bana göre, aynı problemi çözmeye çalışan bir olay UI oluşturmak için çalışıyorlar. Ama her ikisiyle de deneyime sahip biri, nasıl farklılar/nasıl benzerler? Seçmeme yardım etmek için onlar hakkında bir şeyler tarif edebilir misin? Eğer geçit görürdük neden görebilirsiniz olsa da onlar, aslında oldukça farklı çerçeveler konumKnockout.js ve Rx.js arasındaki fark nedir?

cevap

56

Steve (Knockout yaratıcısı) blogunda explained the difference:

Geçenlerde sahip ağır büyük bir proje üzerinde kullandı ve tasarımın aslında yönleriyle, JavaScript için Rx ile çok tanıdık Nakavt, aklımdaki Rx deneyimlerimle yapılmıştır.

nakavt gözlemci desen uygulanması ve Rx en arasındaki temel fark Nakavt otomatik özel fonksiyonel API olsa ön onları belirtmek zorunda kalmadan düzenli prosedürel koddan gözlenebilirlerin arasındaki ilişkileri ve bağımlılıkları çıkarttığı olduğunu. Ben çoğu geliştiriciler için tanıdık ve ulaşılabilir daha düzenli olarak Knockout kullanmak istedim düzenli prosedür/emir tarzı tarzı kodu kullanmak için Knockout.

Başka bir fark, Rx durumsuz akışları oluşturmak için en iyi duruma getirilmiş olan 'dir. numaralı telefondan önce bu ve onun fonksiyonel saflığı konusunda hevesliyim, ancak bir süre sonra garip çemberler arasından atlamak gibi hissettim ve durumun verimli şekilde UI komutlarını yönetmek için simüle edilmesi için ekstra yollar bulması gerekiyordu. Bu nedenle, Knockout'ta tüm gözlenebilirler durum bilgisi olarak ele alınabilir - örneğin her zaman en son değerini okuyabilirsiniz (bu arada önbelleğe alınır, bu da temel veri değişikliklerine kadar karar vermez). Nakavt HTML DOM elemanları ve şablonları kendi gözlenebilirleri bağlamak ve onları istediğiniz şekilde manipüle izin UI geliştirme içine Rx daha ileri gider oysa

Rx, etkinlik akışlarını oluştururken ileri yollarını Knockout daha ileri gider. Rx, modelinin ne yaptığı konusunda harika bir şeydi, ancak tam olarak ne kadar istediğim ortaya çıkmadıysa, zengin UI'ler oluşturmak istedim - dolayısıyla Knockout'un tasarımı.

20

:

RxJs olaylar ve web talepler gibi, asenkron akışları karşı operasyonlarını oluşturan bir araç sağlar ve gelişmiş senaryolar içerir akışları birleştirmek gibi (A ve B hem oluştuğunda, bu başlangıç, ama A veya B tekrar meydana gelirse iptal)

Nakavt Eğer bir model aracılığıyla kullanıcı arayüzü durumunu yönetmek için izin veren bir MVVM çerçeve olduğunu Bu işlevsellik haritaları. Bu, görünümünüzün mantığının görünümünüzden ayrılmasını sağlar.

+15

Şimdi sadece Rx- ve Ko-Gözlemciler arasında köprü kurabileceğinizi belirtmek istedim. Bakınız: https://github.com/cburgdorf/Knockout-Rx/blob/master/app/App.ViewModels.SearchViewModel.js – Christoph

İlgili konular