รูปแบบการเขียนโปรแกรมปฏิกิริยา vs MVVM สำหรับจัดการการปรับปรุง GUI


11

ปฏิกิริยาการเขียนโปรแกรมและ MVVM เป็นสองวิธีที่สามารถแก้ไขปัญหาของการแยกชั้นโดเมนจาก UI

  • MVVM ทำสิ่งนี้โดยกำหนด viewmodel ซึ่งเป็นโครงสร้างข้อมูลที่แม็พกับคอมโพเนนต์ UI UI แสดงข้อมูลและอาจอัปเดตเมื่อผู้ใช้เกิดขึ้น
  • เฟรมเวิร์กที่ทำปฏิกิริยาจะกำหนดกราฟของสิ่งที่สังเกตได้ซึ่งแจ้งให้ UI ทราบว่ามีการเปลี่ยนแปลงข้อมูลบางส่วน

เฟรมเวิร์กปฏิกิริยาได้รับการแบ่งปันความคิดทั้งในแพลตฟอร์มหลัก (ด้วย Rx ใน. net & java, react.js) และสถานที่ทดลองเพิ่มเติม (FRP in haskell)

ฉันใช้ MVVM เป็นมุมเป็นหลักและฉันพบว่าอัตราส่วนความเรียบง่ายต่อการแสดงออกค่อนข้างน่าพอใจแม้ว่าฉันจะทำงานในโครงการขนาดเล็ก / ขนาดกลางเท่านั้น

เฟรมเวิร์กที่ตอบสนองต่อการซื้อนักพัฒนาที่ mvvm ทำไม่ได้คืออะไร

มีความแตกต่างจริงๆเหรอ? ตัวอย่างเช่น knockout.js ถูกโฆษณาเป็นเฟรมเวิร์ก mvvm แต่มีความรู้สึกโต้ตอบในอินเตอร์เฟส:

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

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

MVVM เป็นรูปแบบที่แยกความกังวลของงานนำเสนอจากโดเมน เฟรมเวิร์กปฏิกิริยาเป็นเครื่องมือที่สามารถใช้เพื่อให้บรรลุรูปแบบการแยกนี้ พวกเขาไม่ได้ จำกัด เฉพาะ
AlexFoxGill

@AlexG มีเครื่องมือที่ประสานงานการสื่อสารระหว่าง viewmodel และ UI ฉันจะเรียกกรอบ MVVM เหล่านั้น
Simon Bergot

จุดยืน - KnockoutJS ใช้เฟรมเวิร์กปฏิกิริยาเพื่อเปิดใช้งานการแยก MVVM ของข้อกังวล AngularJS ใช้การตรวจสอบสกปรกเพื่อเปิดใช้งาน MVVM พวกเขาเป็นเพียงวิธีที่แตกต่างในการบรรลุรูปแบบ บางทีคำถามของคุณคือ"กรอบความคิดปฏิกิริยาตอบสนองในกรอบ MVVM ที่เทคนิคการตรวจสอบสิ่งสกปรกไม่ได้ผล"
AlexFoxGill

@AlexG ดังนั้นคุณจะบอกว่ามันเป็นรายละเอียดการใช้งาน? ฉันคิดว่ามันตอบคำถามของฉัน
Simon Bergot

@Simon: ฉันจะไม่ถือว่ามันเป็นรายละเอียดการดำเนินการ แต่เป็นวิธีการที่แตกต่างกันของการสื่อสารการเปลี่ยนแปลงในรูปแบบถึง ViewModel
Bart van Ingen Schenau

คำตอบ:


10

สิ่งเหล่านี้เป็นแนวคิดที่แตกต่างจากคู่แข่งและพวกเขาสามารถทำงานร่วมกันเพื่อสร้างผลลัพธ์ที่ยอดเยี่ยม

ในแง่คนธรรมดา:

MVVM มีประโยชน์ในการหลีกเลี่ยงความยุ่งเหยิงของ codebehind (GUI / model coupling) วิธีการตอบโต้มีประโยชน์ในการลดเหตุการณ์ / โทรกลับถ่วง

ฉันขอแนะนำให้เรียนรู้เล็กน้อยเกี่ยวกับ XAML / WPF เนื่องจาก Microsoft เป็นผู้ประดิษฐ์ดั้งเดิมของ MVVM ไมโครซอฟท์ยังผลิตการใช้วิธีการตอบสนองที่ดีมาก: ส่วนขยายแบบโต้ตอบ

นี่คือความพยายามที่ดีในการรวมเข้าด้วยกัน:

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

คำถาม SO ที่เกี่ยวข้อง:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.