8 puntos por GN⁺ 2025-11-10 | 2 comentarios | Compartir por WhatsApp
  • Un lenguaje declarativo que amplía la sintaxis de HTML para crear interfaces web dinámicas y reactivas, ofreciendo un entorno de desarrollo familiar para quienes ya usan HTML
  • Renderizado en streaming para enviar contenido de inmediato desde el servidor y mostrar la interfaz incluso antes de que cargue el bundle de JavaScript del cliente
  • Bundling de grano fino (fine-grained bundling) para minimizar el envío de código innecesario y mejorar el rendimiento y la velocidad de carga
  • Compilación optimizada por destino (targeted compilation) para generar salidas eficientes tanto para el navegador como para el servidor
  • Soporte integrado para TypeScript y amplias funciones de editor para mejorar la productividad y la calidad del código

Resumen de Marko

  • Marko es un lenguaje declarativo que replantea HTML, con el objetivo de construir interfaces de usuario dinámicas y reactivas
    • La mayoría del HTML válido puede usarse en Marko sin cambios
    • Amplía la sintaxis de HTML para escribir aplicaciones modernas de forma declarativa
  • Ya se utiliza en producción en sitios con tráfico a gran escala como eBay.com
  • Si conoces HTML, CSS y JavaScript, puedes empezar a usarlo de inmediato sin una curva de aprendizaje adicional

Características principales

  • Renderizado en streaming (Streaming) que permite al servidor enviar de inmediato el contenido que ya está listo
    • La pantalla inicial puede mostrarse incluso antes de que cargue el bundle de JavaScript del lado del cliente
    • HTML, imágenes y recursos se cargan de forma asíncrona para ofrecer un renderizado inicial más rápido
  • Bundling de grano fino (Fine-Grained Bundling) para enviar solo el código necesario
    • Elimina código no utilizado y omite hidratación innecesaria a nivel de subplantillas
    • Diseñado bajo la filosofía “Lean by default, Fast by design”
  • Soporte para compilación optimizada por destino (Targeted Compilation)
    • Genera salidas optimizadas para cada entorno teniendo en cuenta las diferencias entre navegador y servidor
    • Cargas más rápidas, bundles más pequeños y una sola lengua unificada para implementarlo todo

Ejemplos de código y sintaxis

  • Ofrece una sintaxis concisa que combina HTML y JavaScript
    <let/count=0>  
    <button onClick() { count++ }>  
      Clicked ${count} times  
    </button>  
    
  • El mismo código también puede escribirse con una sintaxis más breve
    let/count=0  
    button onClick() { count++ }  
      -- Clicked ${count} times  
    
  • Proporciona un conjunto ampliado de etiquetas como <for>, <if>, <await>, <const>, <define>
    • Es posible mezclar etiquetas básicas de HTML con etiquetas específicas de Marko

Rendimiento y escalabilidad

  • Mejora la experiencia de usuario con renderizado inicial más rápido (Faster First Paint)
  • Escalable (Scalable): puede ampliarse con flexibilidad desde plantillas HTML simples hasta estructuras complejas de componentes
  • Mantiene un alto rendimiento en distintos entornos de red gracias a un runtime pequeño y un compilador optimizado

Integración con TypeScript y herramientas de desarrollo

  • Soporte integrado para TypeScript con sólida inferencia de tipos
    • Mantiene la consistencia de tipos entre plantillas y componentes
    • Ofrece funciones del editor como autocompletado, ir a definición, resaltado de sintaxis y formateo
  • Proporciona un entorno de desarrollo estable al detectar errores antes y mejorar la calidad del código

Conclusión

  • Marko es un lenguaje moderno de desarrollo web que combina una sintaxis amigable con HTML, renderizado de alto rendimiento, bundling preciso e integración con TypeScript
  • Funciona de forma eficiente tanto en el servidor como en el cliente, y ofrece la escalabilidad y el rendimiento adecuados para operar servicios a gran escala

2 comentarios

 
shakespeares 2025-11-10

Por ahora, parece que sigue siendo Svelte.

 
GN⁺ 2025-11-10
Comentarios en Hacker News
  • Ojalá que en el futuro el propio HTML soporte sin JavaScript todos los verbos HTTP (como put, delete, etc.), ofrezca de forma nativa controles de entrada como listas desplegables, multiselección, fecha y hora, y permita enviar formularios sin recargar toda la página
    Cuando escuché por primera vez el nombre htmx, esperaba algo así, pero en realidad estaba más al nivel de intercooler
    Este tipo de funciones requiere un amplio soporte de los fabricantes de navegadores

    • Se está trabajando en integrar directamente algunas ideas de htmx en la especificación de HTML
      Se puede ver más sobre eso en el proyecto Triptych
  • Como alguien que ha creado frameworks de JavaScript, creo que Marko está subestimado
    Su optimización en tiempo de compilación es muy impresionante, y la documentación de explicación del bundling granular también es excelente
    De hecho, también mostró buenos resultados en esta comparación de rendimiento de tableros Kanban

    • La moda de RSC y SSR me pareció más bien una excusa para conseguir un ascenso o para fundar una nueva empresa
      React, al unirse con Next.js, traicionó la esencia de la plataforma, y ahora casi ya no hay razones para elegirlo
      La época en que React hidratado estáticamente corría sobre un CDN era mucho mejor
    • Uso SvelteKit con frecuencia en proyectos nuevos, porque tiene un buen equilibrio entre funciones, experiencia de desarrollo y rendimiento
      Aun así, me dan ganas de revisar también Marko
      También estaría bien ver este tipo de análisis profundos del lado de frameworks de escritorio como Electron
  • La razón por la que me gusta React es simplemente porque “es solo JavaScript”
    No me gusta ver sintaxis como <let> o <for>

    • En realidad, JSX tampoco es JavaScript puro
      Solo se siente así porque ya estamos demasiado acostumbrados; conviene recordarlo al ver un framework nuevo
    • Antes ya existían buenas sintaxis de plantillas y todavía existen
      Formas como {% for user in users %} o {#each users as user} son mucho más claras
      JSX tampoco es perfecto — la sintaxis {users.map(...)} sigue siendo verbosa
    • Probé Marko hace tiempo; originalmente empezó como un proyecto interno de eBay y alrededor de 2015 pasó a ser open source
    • Depende de cada quien, pero a algunas personas sí les gustan estas sintaxis basadas en plantillas
      Esa es también una de las razones por las que Vue o Svelte son populares
      Por cierto, Vue también se puede escribir solo con JSX si así lo quieres
    • React ya desde hace mucho dejó de ser “solo JS”
      Su DSL se ha ido inflando, y con hooks como useFormStatus o useActionState se ha vuelto más complejo
      En cambio, la sintaxis de Marko es intuitiva, y las funciones se ven como funciones, las variables como variables, así que es más fácil de entender
  • La forma de meter JS dentro de HTML se siente bastante fresca
    Ryan Carniato participó en este proyecto y después pasó a liderar SolidJS, así que me da curiosidad por qué volvió otra vez al estilo de HTML-in-JS

    • Ryan ya estaba trabajando en Solid antes de unirse a eBay/Marko
      Ambos proyectos evolucionaron compartiendo ideas entre sí y todavía siguen en contacto
    • La razón para elegir JSX fue simple
      Muchos desarrolladores ya lo conocen, y el soporte en editores y TypeScript ya está bastante bien resuelto
    • Eso de “JS dentro de HTML” suena casi como una broma, como si volviéramos a la época de Netscape en 1995
  • Después de más de 20 años, da la impresión de que el frontend ha dado tantas vueltas que terminó regresando al paradigma de la era de JSP
    En ese entonces se le veía como algo “anticuado”, pero al final parece que era lo correcto

    • La tecnología es cíclica, pero cada vez hay mejoras sutiles
      Algunas cosas desaparecen, pero la creatividad de la siguiente generación produce algo nuevo
    • También me acuerdo de JSF — podía restaurar el estado del lado del servidor y permitía crear rápidamente sitios web complejos basados en formularios
      Eso sí, había que tener cuidado con la escalabilidad a gran escala
    • Me cuesta estar de acuerdo con la idea de un “paradigma correcto”
      Según el contexto, otros enfoques pueden ser más adecuados
    • Reducir la elección de SPA a “a la gente no le gustaban las tecnologías viejas” es simplificar demasiado
      En ese momento hacían falta apps móviles y arquitecturas centradas en APIs, y SPA respondía a esa necesidad
      Lo de ahora no es un regreso a JSP, sino un proceso para encontrar un punto de equilibrio entre ambos lados
  • Marko ya es una tecnología probada en eBay
    Lo he usado durante años y nunca tuve problemas
    En cambio, Facebook, Instagram y Messenger, basados en React, no dejan de tener errores de UI
    Si se ven los resultados en servicios reales a gran escala, la estabilidad de Marko destaca

  • Marko ya ha aparecido varias veces en HN
    También hubo hilos relacionados en enero de 2023, agosto de 2017 y febrero de 2015

    • Apenas ahora me entero de que era un proyecto bastante antiguo
  • Parece una sintaxis mucho mejorada frente a JSX
    En especial me gusta la sintaxis concisa estilo Pug, y me pregunto por qué la escondieron tan adentro en la documentación
    Documentación de Concise Syntax

    • Yo también le eché un vistazo a Marko por esa sintaxis concisa
      Pero no me gustaron los errores de resaltado en la documentación ni la forma de distinguir atributos
      Últimamente uso sobre todo Svelte, pero sigo esperando una sintaxis más elegante
    • Personalmente, me da la impresión de que repite los errores de YAML
      La sintaxis basada en espacios está bien, pero detalles como la notación -- o la dificultad de parseo dejan que desear
  • El equipo de Marko incluso creó y publicó directamente un clon de Hacker News para presentar Marko 6
    Ver ejemplo en GitHub

  • Siendo un lenguaje hecho para demos, da un poco de risa que no se vea el texto con degradado de “HTML-based” y “building web apps”