| My framework (imlib[1]) is actually more of a framework akin to Astro than what's showcased on vanillajsx.com, which itself is built with imlib. It just runs your code in a node.js process, and translates your JSX expressions into jsx() calls. On the node.js side[2], jsx() returns a string from its tag/attrs/children. On the browser side[3], jsx() returns DOM elements. Combined with a little bit of architecture, it becomes something extremely well suited to creating static sites. I guess SSG is an outdated term now, maybe it's a framework? Or a platform? In any case, it seems to do something similar to Astro, but in a significantly simpler way. The only "bundle" it needs in the browser is /@imlib/jsx-browser.js [4] which in itself is just jsx-dom.ts (its impl is overridable by the "framework" user). And on the node.js side, it's implemented as a very small "vm" of sorts [5]. I'm not against Astro, I just get all the same benefit people here are saying Astro has, but with orders of magnitude more simplicity imo. I've used imlib to make a relatively large website [6], in fact imlib was developed as this website and extracted from it over the past year. I have absolutely no difficulty breaking down my site into various reusable and encapsulated JSX components, both on the ssg-side and the browser-side. Development time is lightning fast. IDE support is essentially automatic. The site loads instantaneously in the static parts, and as quickly as reasonable in the dynamic parts. [1] https://github.com/sdegutis/imlib [2] https://github.com/sdegutis/imlib/blob/main/src/jsx-strings.... [3] https://github.com/sdegutis/imlib/blob/main/src/jsx-dom.ts [4] https://vanillajsx.com/@imlib/jsx-browser.js [5] https://github.com/sdegutis/imlib/blob/main/src/runtime.ts [6] https://github.com/sdegutis/immaculatalibrary.com |
I'll look into imlib a little more.