How it works
Nuxt has a powerful hooking system to extend internals. Default bundler (@nuxt/webpack) can be replaced by a nuxt module.
nuxt-vite replaces webpack by a similar interface to use vite instead of webpack.
Client-side modules are loaded on demand using vite middleware.
Server-side bundle is being created by another vite instance and written to filesystem and passed using hooks to nuxt server-renderer.
Current approach is not the most efficient way due to usage of filesystem, extra build and lack of lazy loading,
yet much faster than webpack builds. You can opt-out of SSR build using
nuxt dev --spa.