Declarative UI คืออะไร


16

ฉันยังคงเห็นคำนี้ถูกโยนไปรอบ ๆ ในบล็อกเกี่ยวกับกรอบ ในขณะที่ฉันเข้าใจความแตกต่างระหว่างการเขียนโปรแกรมที่เปิดเผยและที่จำเป็นสิ่งนี้นำไปใช้กับ UI ได้อย่างไร ทำไมถึงมีคำพิเศษสำหรับมัน สิ่งเหล่านี้แตกต่างกันหรือไม่? ถ้าเป็นเช่นนั้นทางเลือกอื่นของ Declarative UI คืออะไรและทำไมฉันถึงต้องการใช้มัน


1
@Telastyn ความจำเป็นและการประกาศเป็นสิ่งที่แตกต่างกันมาก มันคือ "อะไร" กับ "อย่างไร" รูปแบบ HTML จะเป็นการประกาศ ลำดับของคำแนะนำในการวาดจะมีความจำเป็น
mike30

@ ไมค์: OP ถามว่า UI ที่จำเป็น / การประกาศนั้นแตกต่างจากการเขียนโปรแกรมที่จำเป็น / การประกาศ พวกเขาไม่.
Telastyn

@Telastyn OP ขอความแตกต่างระหว่าง UI ที่ประกาศกับ UI <foo> (เช่น "UI ที่จำเป็น") และหากมีทางเลือกอื่นสำหรับ UI ที่เปิดเผย
Izkata

คำตอบ:


14

"Declarative UI" หมายถึงคุณอธิบายในภาษาบางประเภทที่องค์ประกอบที่คุณต้องการใน UI ของคุณและในระดับที่ควรจะมีลักษณะอย่างไร แต่คุณสามารถออกจากรายละเอียดเช่นตำแหน่งที่แน่นอนและสไตล์การมองเห็นขององค์ประกอบ ตัวอย่างเช่นใน HTML คุณสามารถอธิบายได้ว่าคุณต้องการฟิลด์ป้อนข้อมูลอย่างไรและตำแหน่งที่จะวางใน UI นั้นขึ้นอยู่กับเบราว์เซอร์ที่คุณใช้

วันนี้คำนี้มักใช้กับเฟรมเวิร์ก UI พร้อมกับแยกลักษณะของ UI ออกจากพฤติกรรมอย่างเข้มงวดซึ่งหมายถึงโค้ดที่ตอบสนองต่อเหตุการณ์ UI ตัวอย่างเช่นการใช้ XAML คุณจะประกาศลักษณะ UI ของคุณในภาษาถิ่น XML เฉพาะ แต่คุณใช้การทำงานในรหัสโปรแกรมแยกต่างหาก


1
คำตอบที่ดี. Nitpick: ไม่ว่าจะมีการระบุรายละเอียดเช่น "ตำแหน่งที่แน่นอน" หรือไม่นั้นเป็นมุมฉากของการหาร / การแบ่งที่จำเป็น อย่างไรก็ตามในทางปฏิบัติแล้ววิธีการอนุญาตให้คอมพิวเตอร์จัดการกับรายละเอียดนั้นเป็นเรื่องธรรมดาในระบบการประกาศ (แม้ว่าฉันจะไม่แน่ใจว่าทำไม)
sleske

8

Declarative UI เป็น UI ที่ได้รับการออกแบบในลักษณะที่เปิดเผย (คุณอธิบายสิ่งที่ควรเป็น) แทนที่จะเป็นวิธีที่จำเป็น (คุณต้องเขียนรหัสขั้นตอนในการสร้าง) มันไม่มีอะไรพิเศษหรือผิดปกติจริงๆ เป็นเวลาอย่างน้อยในช่วงทศวรรษ 1990 เมื่อคุณมี Visual Basic และ Delphi พร้อมด้วยนักออกแบบรูปแบบภาพที่ให้คุณจัดโครงสร้างส่วนติดต่อผู้ใช้ของโปรแกรมของคุณในรูปแบบ WYSIWYG ที่ใช้งานง่าย

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