Uma DSL de HTML segura para Rust e WebAssembly
Monte HTML em Rust puro.
O Molt oferece um builder fluente e a macro html!, escapa tudo uma vez na entrada e renderiza uma string simples. Zero dependências, cerca de 25 KB de WebAssembly e um site estático que você hospeda em qualquer lugar.
cargo add molt-frameworkLicença MIT. Versão 1.x: o que compila hoje continua compilando.
use molt::prelude::*;
fn main() {
let name = "<script>alert(1)</script>";
let card = div()
.add_class("card")
.child(h1().text("Hello, Molt"))
.child(p().text(name));
println!("{}", card.render());
// <div class="card"><h1>Hello, Molt</h1><p><script>alert(1)</script></p></div>
}
Seguro por padrão, pequeno por projeto
Engines de template fazem você lembrar de escapar. Runtimes fazem você entregar quilobytes que ninguém pediu. O Molt não faz nenhuma das duas coisas: ele é só a camada de HTML e se encaixa no resto da sua stack por uma String.
Seguro por construção
Valores de texto e de atributos são escapados uma única vez, onde entram. Uma URL javascript: vira #. Não existe como esquecer.
Zero dependências
O cargo tree nas features padrão mostra uma única crate: o Molt. wasm-bindgen e rayon são opcionais.
Builder ou macro
Use o builder fluente ou a macro html!. A macro expande para as mesmas chamadas do builder, nunca para um segundo caminho de código.
Gerador de site estático incluso
Grave páginas e assets em disco, com sitemap e feed RSS. A saída é HTML puro que você hospeda em qualquer lugar.
Auditoria de acessibilidade
Audite a árvore antes de publicar a página: imagens sem texto alternativo, botões e links sem nome, e mais.
Tranquilo sob entrada hostil
Uma árvore com 100.000 níveis renderiza sem derrubar o processo, e fixtures golden travam a saída byte a byte: mudou a marcação, falhou um teste.
Rápido o bastante para nunca ser o gargalo
Números dos benchmarks e da suíte de testes do próprio projeto, medidos na máquina de desenvolvimento.
- ≈ 400 µspara renderizar uma lista de 10.000 itens
Modo compacto, medido com Criterion.
- ≈ 25 KBde WebAssembly com gzip
Ative com a feature wasm.
- 0dependências obrigatórias
O build padrão é uma única crate.
- forbidcódigo unsafe
A crate define unsafe_code como forbid.
Hospedar é a parte fácil
O Molt renderiza uma string e o gerador de site estático grava HTML puro. Não há servidor para manter nem nada para deixar aquecido. Este site foi feito com o próprio Molt.
- Rode cargo run e receba uma pasta dist com HTML puro.
- Envie o projeto para o GitHub.
- Deixe um host estático publicar. Este site usa o AWS Amplify, que compila a cada push.
O mesmo núcleo, no navegador
Compile com wasm-pack e chame o Molt pelo JavaScript. Mesmo renderizador, mesmas regras de escape, cerca de 25 KB com gzip.
Ler o guia de WebAssemblyCompile e depois chame pelo JavaScript.
$ cargo install wasm-pack
$ wasm-pack build --target web --features wasm
# writes pkg/molt.js and pkg/molt_bg.wasm
# serve the folder over HTTP, ES modules need it
$ python3 -m http.server
import init, { element, WDocument } from "./pkg/molt.js";
await init();
const page = new WDocument("en")
.addBody(element("h1").text("Hello, Molt"))
.addBody(element("p").text("Same renderer."));
document.body.innerHTML = page.render();
O Molt para o seu agente de IA
Um plugin do Claude Code que diz ao agente quais APIs do Molt existem na versão do seu projeto, e o que o Molt deixa de fora de propósito, para ele parar de procurar no código-fonte o que não existe.
Instale com dois comandos
É uma skill que o Claude Code carrega quando um projeto lista molt-framework no Cargo.toml. Nada roda no seu projeto, e funciona offline.
- Lê a sua versão no Cargo.lock e responde por versão: 1.x ou 2.x.
- Avisa das armadilhas de sempre: ordem do texto, nomes de construtores que escondem as suas variáveis, escape.
- Liga cada sintoma à sua correção e aponta para a documentação que vem dentro do crate a partir da 2.0.
Adicione o marketplace
/plugin marketplace add micheltlutz/molt-framework-skillInstale o plugin
/plugin install molt-framework@moltAbra um projeto que dependa do molt-framework. O Claude Code carrega a skill quando ela for útil.
Não usa o Claude Code? O Molt 2.0.0 traz llms.txt e docs/agents.md dentro do crate, para qualquer agente.
Sua primeira página está a um cargo add de distância
Siga o guia Getting Started ou consulte a referência completa da API no docs.rs.