Static Site "Components"? Not So Fast
Katie Kodes makes a compelling case against the idea that server-side templating tools are inherently worse at component-based design than JavaScript frameworks. The argument hinges on a simple equivalence: what JSX achieves with custom tags, Jekyll's Liquid achieves with includes.
1. Any HTML fragment you’d define as
<MyComponent key="value" />in JSX maps directly to{% include MyComponent.html key=value %}in Liquid.2. Any layout you’d write as
<MyLayout>Hello, world</MyLayout>in JSX becomes a simplelayout: MyLayoutentry in a Jekyll template’s front matter.
The distinction further erodes when you consider that any HTML preprocessor capable of partials with scoped variables already approximates the best parts of stateless JavaScript components. And with tools like Eleventy Serverless, which builds individual pages dynamically via cloud-function URLs, the boundary between static and dynamic component models has become nearly invisible. The traditional "static vs. JS" dismissal misses how much overlap truly exists.



