I have also just discovered a dedicated section for the migration from Nuxt to Astro:
>Key Similarities between Nuxt and Astro
Nuxt and Astro share some similarities that will help you migrate your project:
- Astro projects can also be SSG or SSR with page level prerendering.
- Astro uses file-based routing, and allows specially named pages to create dynamic routes.
- Astro is component-based, and your markup structure will be similar before and after your migration.
- Astro has an official integration for using Vue components.
- Astro has support for installing NPM packages, including Vue libraries. You may be able to keep some or all of your existing Vue components and dependencies.
https://docs.astro.build/en/guides/migrate-to-astro/from-nux...
But Astro's model is "generate markup once, serve statically".
Nuxt's model is "Server-Side JavaScript"
So their philosophy is to start with zero client-side javascript, even when one is using components from javascript-heavy frameworks like React or Vue. Interactivity is apparently something one has to explicitly opt-in to by adding a client:* directive, rather than it being the default.
The migration guide states, "Astro projects can also be SSG or SSR with page level prerendering," which puts it on par with Nuxt in that regard.
A difference I've noticed regarding server-side features is that Astro allows one to "define and call backend functions with type-safety."[0] which even Nuxt doesnt offer in such a convenient and type-safe manner. I'm pretty happy with what i'm seeing in Astro's docs so far.
- Nuxt is a Vue-based SPA (single-page application). Astro sites are multi-page apps built using .astro components, but can also support React, Preact, Vue.js, Svelte, SolidJS, AlpineJS, and raw HTML templating.
- Page Routing: Nuxt uses vue-router for SPA routing, and vue-meta for managing <head>. In Astro, you will create separate HTML page routes and control your page <head> directly, or in a layout component.
- content-driven: Astro was designed to showcase your content and to allow you to opt-in to interactivity only as needed. An existing Nuxt app may be built for high client-side interactivity. Astro has built-in capabilities for working with your content, such as page generation, but may require advanced Astro techniques to include items that are more challenging to replicate using .astro components, such as dashboards.
[0] https://docs.astro.build/en/guides/migrate-to-astro/from-nux...
Nuxt is a server-side JavaScript framework with a complete HTTP application stack, built on top of Nitro (which includes an even larger suite of capabilities) and H3.
https://nitro.build https://v1.h3.dev
Astro is markup generation.
They are only comparable in that "both can print markup".
[0] https://docs.astro.build/en/concepts/islands/#server-islands