A declarative, HTML-based language that makes building web apps fun
Server-Side RenderedThis component has its own state — powered by Marko's class-based components.
Marko streams HTML to the browser as it renders — no waiting for the full page.
Build reusable UI components with encapsulated state and logic.
Marko ships only what the browser needs — automatic partial hydration.
Fine-grained reactivity with automatic DOM updates when state changes.
Templates are compiled to optimised JavaScript at build time.
First-class support for async data with the <await> tag.
// A simple counter component in Marko
class {
onCreate() {
this.state = { count: 0 };
}
increment() {
this.state.count++;
}
}
<button on-click("increment")>
Clicked ${state.count} times
</button>