Nitro
Learn the basics of SSR, SFC, and routing

Create a minimal Vue SSR app in just a few lines:
import { createServer } from 'node:http'
import { createApp, toNodeListener } from 'h3'
import { renderMiddleware } from './render'
const app = createApp()
app.use(renderMiddleware)
const server = createServer(toNodeListener(app))
server.listen(3030, () => {
console.log('Server listening on http://localhost:3030')
})import { createRenderer } from 'vue-bundle-renderer/runtime'
import { renderToString } from 'vue/server-renderer'
import { h, createApp } from 'vue'
import { eventHandler } from 'h3'
const _createApp = () => {
const app = createApp({
render: () => h('p', 'hello world'),
})
return app
}
const renderer = createRenderer(_createApp, { renderToString })
export const renderMiddleware = eventHandler(async event => {
const { res } = event.node
const rendered = await renderer.renderToString({})
const data = renderHTML(rendered)
res.setHeader('Content-Type', 'text/html;charset=UTF-8')
res.end(data, 'utf-8')
})