← Todos los tutoriales
web-app 6 min

Devolver Páginas HTML

Devolver texto plano es un comienzo, pero las aplicaciones web necesitan HTML. El bloque html: de Clean Language te permite escribir HTML directamente dentro de una función — las variables se interpolan automáticamente y el resultado es simplemente un string que puedes devolver.

El bloque html: convierte el marcado sangrado en un string devuelto:

functions:\n    string page_shell(string title, string body_content)\n        html:\n            \n            \n            \n                \n                {title}\n                \n            \n            \n                {!body_content}\n            \n            

Las variables entre llaves se interpolan. Usa {title} para texto que debe ser escapado como HTML — seguro para entradas del usuario. Usa {!body_content} cuando la variable ya contiene HTML de confianza que no debe ser doblemente escapado.

Llama al helper en tu endpoint para construir una página completa:

endpoints server:\n    GET "/" :\n        string content = "

Welcome!

Built with Clean Language.

"\n string page = page_shell("Welcome", content)\n return http.respond(200, "text/html", page)\n\n GET "/about" :\n string content = "

About

A Clean Language web app.

"\n string page = page_shell("About", content)\n return http.respond(200, "text/html", page)
GET /       → 200, full HTML page with title and content\nGET /about  → 200, full HTML page with about content

Ambas rutas comparten el mismo helper page_shell — cambia el encabezado o el pie de página una vez y todas las páginas se actualizan. Este es el modelo de componentes de Clean Language: funciones de string reutilizables.

Resumen rápido

  • El bloque html: devuelve un string de HTML — es azúcar sintáctico, no un tipo especial
  • La interpolación con llaves auto-escapa HTML — segura para valores del usuario
  • La interpolación con llaves y ! inserta HTML sin procesar — úsala solo para contenido que controlas
  • Construye helpers en un bloque functions: y compártelos entre endpoints
¡Copiado!