O que é UI declarativa?

16

Eu continuo vendo esse termo sendo lançado em blogs sobre frameworks. Embora eu entenda a diferença entre programação declarativa e imperativa, como isso se aplica especificamente à interface do usuário? Por que parece haver um termo especial para isso? Essas coisas são diferentes? Em caso afirmativo, qual é a alternativa à UI declarativa e por que eu gostaria de usá-la?

MrFox
fonte
1
@Telastyn. Imperativo e declarativo são coisas muito diferentes. É "o que" vs "como". Um layout HTML seria declarativo. Uma sequência de instruções de desenho seria imperativa.
precisa saber é o seguinte
@ Mike: O OP perguntou se a interface de usuário imperativa / declarativa era diferente da programação imperativa / declarativa. Eles não são.
Telastyn 2/11/12
@Telastyn O OP está perguntando a diferença entre a interface do usuário declarativa e a interface do usuário <foo> (como "interface de usuário imperativa") e se existe uma alternativa à interface do usuário declarativa.
Izkata

Respostas:

14

"Interface do usuário declarativa" significa que você descreve em algum tipo de linguagem quais elementos você precisa na sua interface do usuário e, até certo ponto, como eles devem ser, mas você pode deixar de fora detalhes como a posição exata e o estilo visual dos elementos. Por exemplo, em HTML, você pode descrever que deseja um campo de entrada, mas como e onde esse campo será colocado na interface do usuário depende muito do navegador que você está usando.

Hoje, o termo é usado com mais frequência para estruturas de interface do usuário com uma separação estrita da aparência da interface do usuário do comportamento, o que significa que o código está reagindo aos eventos da interface do usuário. Por exemplo, usando XAML, você declara a aparência da sua interface do usuário em um dialeto XML específico, mas implementa o comportamento em um código de programa separado.

Doc Brown
fonte
1
Boa resposta. Nitpick: se detalhes como a "posição exata" são especificados ou não, é ortogonal à divisão declarativa / imperativa. No entanto, na prática, a abordagem de deixar o computador lidar com os detalhes é mais comum em sistemas declarativos (embora não tenha certeza do motivo).
sleske
8

Interface do usuário declarativa é uma interface do usuário projetada de maneira declarativa (você descreve como deve ser) em vez de uma maneira imperativa (você codifica as etapas para criá-la.) Não é realmente nada de especial ou incomum; existe desde pelo menos a década de 1990, quando você tinha o Visual Basic e o Delphi com designers de formulários visuais que permitem definir a interface do usuário do seu programa de maneira WYSIWYG intuitiva.

Mason Wheeler
fonte