GUI güncellemelerini yönetmek için reaktif programlama ve MVVM modeli


11

Reaktif programlama ve MVVM, etki alanı katmanını kullanıcı arayüzünden ayırma sorununu çözebilen iki yaklaşımdır.

  • MVVM bunu UI bileşenlerine eşlenen bir veri yapısı olan bir viewmodel tanımlayarak yapar. Kullanıcı arayüzü verileri görüntüler ve kullanıcı gerçekleştiğinde günceller.
  • reaktif bir çerçeve, kullanıcı arayüzüne bazı verilerin değiştiğini bildiren gözlemlenebilir bir grafik tanımlar

Reaktif çerçeveler, hem genel platformlarda (.net & java'da Rx ile, reakt.js ile) hem de daha fazla deneysel yerde (haskell'de FRP) akıl payı kazanıyor.

Esas olarak açısal olarak MVVM kullandım ve sadece küçük / orta ölçekli projeler üzerinde çalışmama rağmen ifade-basitlik oranını oldukça tatmin edici buluyorum.

Mvvm'nin geliştirmediği reaktif bir çerçeve ne satın alıyor?

Gerçekten bir fark var mı? Örneğin, knockout.js bir mvvm çerçevesi olarak ilan edilir, ancak arayüzünde reaktif bir his vardır:

this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");

this.fullName = ko.computed(function() {
    return this.firstName() + " " + this.lastName();
}, this);

MVVM, sunum endişesini alan adından ayırmak için bir modeldir . Reaktif çerçeveler bu ayırma düzenini elde etmek için kullanılabilecek araçlardır . Münhasır değiller.
AlexFoxGill

@AlexG Bir görünüm modeli ve kullanıcı arayüzü arasındaki iletişimi koordine eden araçlar var. Bu MVVM çerçevelerini çağırırım.
Simon Bergot

Nokta duruyor - KnockoutJS , MVVM'nin endişelerin ayrılmasını sağlamak için reaktif bir çerçeve kullanıyor . AngularJS , MVVM'yi etkinleştirmek için kirli denetim kullanır . Onlar sadece paterni elde etmenin farklı yollarıdır. Belki de sorunuz "Reaktif paradigma, bir Kirli-Kontrol tekniğinin yapmadığı bir MVVM çerçevesinde ne elde eder?"
AlexFoxGill

@AlexG yani bir uygulama detayı olduğunu söyleyebilir misiniz? Sanırım soruma cevap veriyor.
Simon Bergot

@Simon: Bunu bir uygulama detayı olarak nitelendirmem, daha çok
Modeldeki

Yanıtlar:


10

Bunlar farklı rakip olmayan konseptlerdir ve harika bir sonuç elde etmek için kolayca birlikte çalışabilirler.

Layman açısından:

MVVM, kod arkası (GUI / model kuplajı) karmaşasından kurtulmak için yararlıdır. Reaktif yaklaşım, olay / geri arama dağınıklığını azaltmak için kullanışlıdır.

Microsoft MVVM'nin orijinal mucidi olduğu için XAML / WPF hakkında biraz bilgi edinmenizi tavsiye ederim. Microsoft ayrıca Reaktif yaklaşımın çok iyi bir uygulamasını üretti: Reaktif Uzantıları.

İşte onları birleştirmek için iyi bir girişim:

http://www.reactiveui.net https://github.com/reactiveui/ReactiveUI

İlgili SO sorusu:

/programming/1763411/reactive-extensions-rx-mvvm

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.