Lập trình phản ứng so với mẫu MVVM để quản lý cập nhật GUI


10

Lập trình phản ứng và MVVM là hai cách tiếp cận có thể giải quyết vấn đề tách lớp miền khỏi UI.

  • MVVM thực hiện điều này bằng cách định nghĩa một khung nhìn, là cấu trúc dữ liệu được ánh xạ tới các thành phần UI. Giao diện người dùng hiển thị dữ liệu và có thể cập nhật dữ liệu khi người dùng xảy ra.
  • một khung phản ứng xác định một biểu đồ quan sát được thông báo cho UI rằng một số phần dữ liệu đã thay đổi

Các khung phản ứng đang đạt được chia sẻ tâm trí, cả trong các nền tảng chính (với Rx trong .net & java, Reac.js) và các địa điểm thử nghiệm hơn (FRP in haskell).

Tôi chủ yếu sử dụng MVVM với góc cạnh và tôi thấy tỷ lệ đơn giản so với biểu cảm khá thỏa mãn, mặc dù tôi chỉ làm việc trên các dự án nhỏ / vừa với nó.

Khung phản ứng mua gì cho nhà phát triển mà mvvm không có?

Có gì khác sao? Ví dụ: knoutout.js được quảng cáo dưới dạng khung mvvm, nhưng có cảm giác phản ứng trong giao diện của nó:

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

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

MVVM là một mẫu để phân tách mối quan tâm của việc trình bày khỏi miền. Khung phản ứng là các công cụ có thể được sử dụng để đạt được mô hình phân tách này. Họ không độc quyền.
AlexFoxGill

@AlexG Vâng, có các công cụ phối hợp giao tiếp giữa chế độ xem và giao diện người dùng. Tôi sẽ gọi các khung công tác MVVM đó.
Simon Bergot

Điểm nổi bật - KnockoutJS sử dụng khung phản ứng để cho phép phân tách mối quan tâm MVVM. AngularJS sử dụng kiểm tra bẩn để kích hoạt MVVM. Họ chỉ là những cách khác nhau để đạt được mô hình. Có lẽ câu hỏi của bạn là "Mô hình Reactive đạt được gì trong khung MVVM mà kỹ thuật Kiểm tra bẩn không?"
AlexFoxGill

@AlexG vậy bạn sẽ nói đó là chi tiết triển khai chứ? Tôi nghĩ rằng nó trả lời câu hỏi của tôi.
Simon Bergot

@Simon: Tôi sẽ không đủ điều kiện làm chi tiết triển khai, nhưng nhiều hơn là các cách tiếp cận khác nhau trong việc truyền đạt các thay đổi trong Mô hình lên ViewModel
Bart van Ingen Schenau

Câu trả lời:


9

Đó là những khái niệm không cạnh tranh khác nhau và chúng có thể dễ dàng làm việc cùng nhau để tạo ra một kết quả tuyệt vời.

Theo cách nói của giáo dân:

MVVM là hữu ích để thoát khỏi sự lộn xộn của codebehind (GUI / mô hình). Phương pháp phản ứng là hữu ích để giảm sự lộn xộn sự kiện / gọi lại.

Tôi khuyên bạn nên tìm hiểu một chút về XAML / WPF vì Microsoft là nhà phát minh ban đầu của MVVM. Microsoft cũng sản xuất một cách thực hiện rất tốt phương pháp Reactive: Phần mở rộng Reactive.

Đây là một nỗ lực hợp lý để kết hợp chúng:

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

Câu hỏi SO liên quan:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.