top | item 27440965

(no title)

whelming_wave | 4 years ago

How does this compare to Elder.js[1] which released a little while ago? You seem to have similar goals - mostly static site with small amounts of interactivity, minimum JS to achieve that - but Astro supports multiple frameworks, while Elder.js is restricted to Svelte. Are there any other big differences?

[1]: https://elderguide.com/tech/elderjs/

discuss

order

nickreese|4 years ago

Hey Elder.js author here. Only browsed their docs but here are the things that stand out in very quick read:

- Framework agnostic but uses their own .astro language/filetype. Elder.js is Svelte only.

- Both support partial hydration and they appear to offer similar options as Elder.js

- Elder.js’ target isn’t building a small site but a large one. So data flow and making the data model pluggable via hooks and plugins really makes this possible in a way we haven’t seen other framework approach it. We’ve heavily dogfooded Elder.js for building major SEO assets. Fetch as the main way of getting external data in Astro where Elder.js leaves that up to you and gives you complete control allowing various database or filesystem sources.

- Unclear on their build process.

- Elder.js is express middleware (SSR) and a static site generator. Astro appears to just be a SSG. (Some of our sites are outgrowing SSG so the flexibility matters).

- No shortcode support, hooks, or plugins.

My take is that Astro might be a good fit for simpler use-cases but may stumble when you need more control or go against their model. Elder.js has similar opinions but tries to put you in full control. That comes at a complexity cost which Astro appears to do a good job of simplifying but I’d need to dig in deeper to see what tradeoffs were made in order to make things simpler.

Happy to see more people taking partial hydration seriously.

Edit: formatting

fks|4 years ago

Elder is great! We're definitely fans. both Elder and Astro deliver Partial Hydration and the same "0kb JS by default" story. We wanted something less Svelte-specific and more pluggable, along with some other neat features mentioned in the README that couldn't fit in the launch post.