Acorda pra Web!

Tecnologia que vai mudar nossas vidas, depois do café.

Meu framework não será MVC

Não totalmente, não esse falso MVC por aí. Em todos os frameworks pra web há um engano conceitual profundo: O View é o HTML.

Por definição, View é a parte da apresentação da aplicação, é a renderização para o usuário do Model. Trocando em miúdos, é aquela coisa que mostramos pro usuário.

Há 10 anos atrás, talvez colocar o HTML como View talvez fosse a melhor saída, mas hoje o HTML é definido como uma camada de informação, não de apresentação.  O HTML tem conteúdo, tem significado, é semântico.

Pensando por esse lado, o HTML está mais próximo do Model do que do View. Um site estático cheio de páginas HTML e um arquivo CSS pra todas também é um framework MVC, o Model é o HTML, o View é o CSS e o Controller é o sistema de arquivos do servidor.

Pode parecer extremamente sujo misturar bancos de dados com HTML, mas não é disso que estamos falando. É possível manter o HTML separado do banco de dados, como uma camada intermediária entre o Model e o View. É um pre-view post-model. Como se não bastasse, o HTML também é Controller, com formulários e links.

Ainda não descobri como resolver o problema do HTML, não posso simplesmente jogar a resposta do banco de dados na página e usar CSS nela. A solução ideal seria usar XSLT como camada intermediária entre o banco de dados e o HTML, mas ele é complicado demais para tornar o framework um facilitador. Imagino que no final, o HTML ficará como uma camada de Model-template.

7 Respostas para “Meu framework não será MVC”

  1. VitorGGA diz:

    Kra, q pizeru
    hhuuuhhu, você colocou o HTML em tanto lugar ai que no final das contas ainda não sakei nada huhuuhhu
    “Model é o HTML, o View é o CSS e o Controller é o sistema de arquivos do servidor”
    O problema disso é que o CSS não é tão personalizável assim (não para mim mero mortal).
    Você falou umas mil vezes em Model em HTML, sendo assim, o View, não sendo o CSS, seria o que?

  2. JulioGreff diz:

    O CSS é view, apresentação, embora discorde da sua visão do HTML no model. Talvez como um intermediário, mas não como model. Não sou muito entendido nesses bichos aí, mas creio que o HTML esteja mais perto do view do que do model…

  3. Diogo diz:

    Ainda posso comentar aqui?

    Uma ideia para o openIdeo,o HTML fica em view(mais do que em model), mas pertence a um pacote view-model da seguinte forma, como um MVC dentro do view:

    View
    - model (html)
    - view (parser+css)

    O parser “puxa” o html e usa o css.

    Lembrando que o view é TODA a camada de apresentação, O css ser o view implicaria em o css acessar o model para formar a interface. A quebra de padrão se da pq o model, html, chamaria o view, css, isso vai contra o padrão MVC.

    O que o usuario acessa é o HTML, por isso tem de ser view.

  4. DGmike diz:

    Ainda estou na dúvida, esse papo é muito cabeça. Mas, já ouviu falar em bbcode?
    substituir *texto* por [ strong ]texto[/strong]
    Ou outras marcações do genero como:

    # item
    # item

    por

    [li]item[/li]
    [li]item[/li]

    e assim por diante… Você pode usar algo como

    ==sessao==

    ==subsessao==

    ==subsubsessao==

    ==fimsubsessao==

    ==sessao==

    para iniciar um div que você quer que seja usado como div e com fechamento automático (ou não) assim você tem o texto como simples texto. O interessante é que você teria apenas texto.
    Outra sugestão seria você definir, como disse meu amigo Diogo mais acima de colocar o css embutido. O parser se encarregaria de colocá-lo no head do HTML.

  5. MILHOtário diz:

    Cara, para mim não importa quem é o M, ou o V ou o C, enfim, o que importa é o quanto o cliente vai pagar pelo trabalho e pronto. heheheehhe

    abraços

  6. Sarti diz:

    Bom, acredito que você mesmo está se confundindo em suas relações, nisso e naquilo.
    CSS = Cascading Style Sheets é uma linguagem de estilos, que formata ou trata as marcações ( DIVS, TABLE, SPAN, A ) em HTML ou XHTML

    CSS Nunca foi e nunca será uma VIEW.

    Tente montar uma VIEW apenas usando um CSS e depois me fala se dá.

  7. Danilo Morães diz:

    Atrasado mas vou falar o que vejo.

    Em se tratando de MVC para web, HTML é parte da view. Model trabalha com dados, view com informações. Um dado formatado e organizado, vira uma informação. O controller, em se tratando de MVC para web, é quem recebe a requisição, entende o que o usuario quer, pega os dados de que ele precisa e entrega para a view correta, que sabe como transformar aqueles determinados dados em informação para o usuário.

    Se for pensar que view é aquilo que o usuário vê, então um modelo mvc para web só vai poder englobar model e controller porque a view é o browser. Model tem os dados e os devolveria apenas como dados, organizados dentro de tags e tals. Controller entende o que o usuario quer e devolve os dados em html e o browser decide como renderizar ou posicionar os dados para transformá-los em informação.

    Mas não tratamos o browser como fazendo parte do modelo mvc de um sistema pra web, então consideramos que o HTML puro e cru é quem faz a informação. Desconsideramos que o browser vá renderizar o html e passamos a considerar o html como a própria view.

    Se tu passar o html para o model, teria que entender o browser como sua view, o que seria algo meio inútil, vocẽ trabalharia apenas com duas camadas (model e controller) o que aumentaria a complexidade do controller sem motivo.

    Mas entenda que mvc para desktop é diferente. E mesmo a sun tem um modelo diferente da apple sobre mvc. A ideia de que controller recebe a chamada do usuário é usada apenas na web. Tanto que pra desktop, view pode chamar model diretamente. A view sabe que informações pegar e onde pegar.

Deixar um Comentário

XHTML: Você pode usar essas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>