Pular para o conteúdo
Nesta página

Views e Markup do Verniz

Um componente Verniz é uma função Zolo que retorna View. Não há classe base, tabela de registro nem uma segunda linguagem de expressões.

Markup é Zolo

use std::html::{article, h2, p, View}

fn PostCard(titulo: str, resumo: str) -> View {
    <article class="post">
        <h2>{titulo}</h2>
        <p>{resumo}</p>
    </article>
}

O parser baixa isso para a mesma representação da sintaxe builder:

article(class: "post") {
    h2() { titulo }
    p() { resumo }
}

Use a forma mais clara. Componentes e elementos HTML seguem as mesmas regras de chamada, inclusive argumentos nomeados e valores padrão.

Texto, expressões e controle de fluxo

Dentro do markup, texto é literal. Chaves voltam para a linguagem Zolo completa:

fn Resultados(itens: [str], mostrar_vazio: bool) -> View {
    <section>
        {if itens.len() == 0 && mostrar_vazio {
            <p>Nenhum resultado.</p>
        }}
        {for item in itens {
            <p key={item}>{item}</p>
        }}
    </section>
}

Use comentários HTML dentro do markup: <!-- nota -->. Comentários Zolo // e /* */ são aceitos entre atributos da tag.

Seguro por padrão

Texto interpolado e atributos são escapados. Um título com <script> vira texto, não markup executável. Use raw(valor) somente para HTML que já atravessou uma fronteira de confiança com segurança.

Documentos, fragmentos e rotas

Use document, head e body para páginas completas, ou fragment para irmãos sem wrapper. render(view) serializa uma View explicitamente.

Uma rota HTTP pode retornar View diretamente. O servidor renderiza e escolhe o content type HTML. Ele também serve o runtime do Verniz em /_zolo/client.js quando a página inclui client_script().

Elementos de texto raw

Os corpos de <style> e <script> são lidos como CSS e JavaScript, não como markup. Um <style> estático dentro do componente é escopado e içado por padrão; escreva <style global> para CSS do documento.

Próximo: Ilhas, Signals e Actions.

Buscar no Zolo

9 resultados

enpt-br