Marko – A declarative, HTML‑based language

Syntax, JS-in-HTML, and “HTML-based” Label

  • Some dislike embedding JS expressions directly in markup (evoking bad memories of PHP “spaghetti”), and argue the intro is misleading by calling it “HTML‑based” while relying heavily on JavaScript.
  • Others see the example as a normal modern template (similar to JSX or Svelte), not at all like old PHP, and say the OP is really just expressing a generic dislike of mixing logic and markup.
  • Marko-specific constructs like <let/count=0> and <for> are polarizing: some see them as an unnecessary DSL that hurts tooling compatibility; others find the syntax straightforward and readable.
  • There’s a parallel thread about concise/Pug‑style syntax: some love Marko’s concise mode, others find it too “compressed” and error‑prone, reminiscent of YAML/HAML issues.

Separation of Concerns vs Single-File Components

  • One camp prefers strict separation (HTML/CSS/JS in different files; IDs + scripts; or Alpine.js‑style behavior) to keep designers from breaking logic and vice versa.
  • The opposing view argues frameworks like JSX/Marko solve the “ID wiring” mess, keep templates type-safe, and better align logic with the DOM it drives.

Performance, SSR, and Proven Use

  • Multiple comments highlight Marko’s origins at eBay, decade‑long production use, and strengths: streaming SSR, partial hydration by default, and fine‑grained bundling.
  • Marko 6’s move toward “resumability” is noted as focusing heavily on load‑time performance, comparable to or ahead of other SSR‑first frameworks.

Routing and App Structure

  • File‑based routing (Marko Run, SvelteKit, Next‑style) is criticized as “fundamentally flawed” for apps needing conditional routes, RBAC metadata, etc.; advocates prefer programmatic route trees with a single source of truth.
  • Others argue file‑based routing is fine for website‑like systems and easier for newcomers.

Comparisons to Other Frameworks

  • Marko is repeatedly compared to Svelte, Vue, JSX/React, htmx, ColdFusion/JSP, and even jQuery.
  • Some think JSX is still the best templating approach because it’s “just JavaScript” and composes arbitrarily; others prefer directive‑based templates (Vue/Svelte) as simpler and more efficient.
  • A few see Marko as a significantly better‑designed JSX alternative; others say if you’re choosing a framework solely for JS‑in‑HTML, SvelteKit or similar might be more compelling.

Ecosystem Fatigue and Platform Wishes

  • Several express exhaustion with continual new JS frameworks and prefer sticking to “big players” (Angular, React, Vue) or progressive enhancement.
  • Others counter that Marko isn’t new, has a solid track record, and that evolution (e.g., JSP → SPA → SSR+resumability hybrids) brings real improvements.
  • Some wish instead for richer native HTML (better form controls, HTTP verbs, partial page updates) and efforts like htmx/HTML spec proposals to reduce the need for JS frameworks altogether.