[HN Gopher] Astro: Ship Less JavaScript ___________________________________________________________________ Astro: Ship Less JavaScript Author : feross Score : 133 points Date : 2021-06-08 20:46 UTC (2 hours ago) (HTM) web link (astro.build) (TXT) w3m dump (astro.build) | m1117 wrote: | I want some demos. One demo=thousand readmes. | fks wrote: | Run `npm create astro` in any directory to load one of 4 | starter demos! | tchetwin wrote: | Suspect that should be `npm init astro` or `yarn create | astro`. | | TIL: npm initializers, thanks! | fks wrote: | :wave: Hey everyone, one of the Astro creators here! Happy to | talk Astro or answer any questions you have about what we're | building. | | Our README has a bunch more info that we couldn't fit into the | release post: https://github.com/snowpackjs/astro | zanethomas wrote: | very interesting, i'm going to try it out with a vue project | soon | superjan wrote: | Hi, looks like a great development for developers and users | alike. But I am curious how you intend to make money from this. | Or is this a not for profit initiative? | gmmeyer wrote: | it seems like it's just an OSS project no need to make money | whelming_wave wrote: | 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/ | fks wrote: | 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. | nickreese wrote: | 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 | mwcampbell wrote: | Congrats on the release. For some reason when I heard of Astro, | I thought it was a dynamic server-side rendering framework, not | a static site builder. But I'm sure someone else will take on | SSR with islands if they haven't already. | | Also: | | > Astro is and always will be free. It is an open source | project released under the MIT license. | | > We care deeply about building a more sustainable future for | open source software. At the same time, we need to support | Astro's development long-term. This requires money (donations | alone aren't enough.) | | Why make it harder for yourselves by choosing such a permissive | license? Developers shouldn't be ashamed to not just ask for, | but demand, compensation, for the software itself, by choosing | a more restrictive license. Even if that means you can't call | it free software or open source, e.g. a source-available | license that requires payment for commercial use. By now we | should be ready to accept that free software with no strings | attached just isn't sustainable except for projects with big | corporate backers. | nickreese wrote: | Elder.js supports Islands with SSR. It is also MIT. I | released it as an SEO experiment as much as anything else. | | I'm enjoying the dev process and am committed to facilitating | (myself or paying another) it's maintenance for several | years. I can do that because my prior successes can subsidize | the cost. | | If I had to do it again, I'd probably pick another license. | As a first time maintainer of a project that is hitting the | pit of success it is amazing the number of for profit | companies taking the framework and demanding changes to suit | their narrow business cases. | | I literally LOL at some of the emails. I very much think the | state of OSS isn't sustainable. It has been an interesting | rodeo. | camdenlock wrote: | Hi fks. Astro looks really compelling, but I'm already addicted | to NextJS and deploying on Vercel. Any chance an Astro app will | be deployable on Vercel or similar services? | fks wrote: | Yup, static site means you can pretty much deploy anywhere! | Just configure Vercel to point to the final destination build | directory when you set up your project. | exacube wrote: | Thanks for all the hard work and open sourcing it! | | Are there benchmarks/numbers for how Astro improves page load / | page download size for a relatively complicated web app? I | wasn't able to find it on the website or the README. | fks wrote: | No benchmarks yet, but I'll look into adding some. In the | meantime there are a few sites in the wild already built with | Astro that you can check out: | | - https://www.snowpack.dev/ | | - https://divriots.com/ | jacobsimon wrote: | Hey! Do you have any live demos or real(ish) apps made with | Astro that we could check out? | fks wrote: | There are a few sites in the wild already built with Astro | that you can check out: | | - https://www.snowpack.dev/ - https://divriots.com/ | virgil_disgr4ce wrote: | That snowpack site is definitely pretty %*(&ing fast :D | qbasic_forever wrote: | How well do web components fit into astro pages? Do you get the | same kind of partial hydration/load on first view semantics | with them as it looks like you can do with React/Vue/Svelte | components? | MatthewPhillips wrote: | Not yet, Lit has support for SSR in prerelease and we've | experimented with supporting it. Once it's ready it will be | included. In the meantime you can of course use web | components (with any framework) like you normally would, just | without SSR. | | Tracking issue for Lit support: | https://github.com/snowpackjs/astro/issues/109 | qbasic_forever wrote: | Very cool! Yeah I wish SSR was more of a thing in the web | component world. Someday soon hopefully! | MatthewPhillips wrote: | Stencil support is being worked on too: | https://github.com/snowpackjs/astro/pull/266 | r6203 wrote: | At the moment I'm using Gatsby but the client side js bundle | turns me off. However, one thing I really like about Gatsby is | the dynamic image component. | | Is there any way (or are there any plans) for generating | responsive images when using Astro? As Astro is framework | agnostic, I don't think so, right? | hnal943 wrote: | This is neat. The last site I built in Next.js we turned off the | SPA, but needed to then write all the client side js in a | separate workflow. Seems like this could be progress. | ecmascript wrote: | I read "how astro works" but I don't really get it. How can this | work for dynamic content? Does it render every possible scenario? | | What if data changes? | MatthewPhillips wrote: | Currently you build a static site like you do with Gatsby or | Jekyll or any other static site generator. In the future it | will support dynamic server rendering. | ecmascript wrote: | Ok so it is a static site generator. Wasn't really obvious | from the landing page. | | Doesn't almost every large front end framework have a static | site generator? I think Vue for example has it built in for | example. | | Why would anyone use this over the already existing one in | their current ecosystem? | MatthewPhillips wrote: | I can't speak for every frameworks' SSG tool but most of | them load a full SPA on the client and have poor | performance. Go pick out a random website for Gatsby's | showcase page and see how much JS is loaded (spoiler: a | lot). | | Astro focuses on partial hydration where you only load the | JS for the specific components that need to run in the | client. Very few tools and none of the framework SSG's that | I'm aware of do this. | | There's also a variety of other features that Astro brings, | the blog post talks about them. | ecmascript wrote: | Ok well it seems kind of cool, maybe I'll try it out. :) | qbasic_forever wrote: | Check out the islands architecture info, or search around for | info on partial hydration. It's similar to how things worked in | the jQuery days--you serve up plain old HTML and have a JS | function that runs on page load to attach all the event | handlers (onclick, etc.) to your dynamic elements (i.e. | 'hydrating' the static HTML into dynamic HTML + JS components). | The thing with frameworks like Astro is that they try to | automate and manage all of that hydration for you, which is | nice because for complex sites with lots of different | components it becomes a huge, error prone chore to manually | wire things up. | | edit: Island architecture background info: | https://jasonformat.com/islands-architecture/ | aligray wrote: | New static site generator tool releases seem to have superseded | new js framework releases. I like the direction things are | moving. | z3t4 wrote: | Next biggest thing will be a framework for a static site to | generate a React app, that generates a static site, inside a | web worker. | dasb wrote: | Is it possible to achieve the same thing just with Svelte + | SvelteKit and some configs? | | (I genuinely don't know, since I'm a Svelte begginer) | miltonsopus wrote: | Yes, with SvelteKit you can use the static adapter to generate | static html files for your routes. It's also possible to | control this on a page by page basis. | nielsbot wrote: | Wondering how this compares to Gatsby or other React-compatible | static site generators... | MatthewPhillips wrote: | Most of those tools are focused on giving you a full SPA on the | client (and therefore load a lot of JS). Astro is focused on | sites that are mostly static with "islands" of interactivity. | To that end every component is server rendered only, by | default, and you opt-in to client render when you need it (with | different loading strategies). | jypepin wrote: | JS dev: I'm burnt out by having to keep up with all the tools | that are releasing all the time! | | Also JS dev: Look, I've built another tool! | wizzwizz4 wrote: | This tool undoes a lot of harm of tool proliferation. It's one | of the few JavaScript tools I'll actually approve of. | | If you're confused, perhaps try not lumping everybody into the | homogenous "JS dev". | krmmalik wrote: | Templates for low coders like me? | kissgyorgy wrote: | https://dayssincelastjavascriptframework.com/ | bdibs wrote: | It's sort of ironic that page loads 213kB of JavaScript from | 8(!) separate scripts to show a large 0. | jeroenhd wrote: | To be fair (but not too much), the devs did compress and | minify their JS and host everything on the same domain, so | with HTTP/2 the network impact should not be too high in | comparison. | | In comparison to a "normal" web page that loads 213KiB of | script that's not necessary because the HTML already shows | the big zero regardless. At least the CSS is fairly minimal. | | The web is a terrible place. Google should rank | Javascriptless websites higher in search results to push for | less scripting, it's the only way I can see this situation | improving. | 0xbadcafebee wrote: | > Of course, sometimes client-side JavaScript is inevitable. | Image carousels, shopping carts | | wait, what? I've built shopping carts that didn't need | javascript... but that was probably 15 years ago... ___________________________________________________________________ (page generated 2021-06-08 23:00 UTC)