@tanstack/vue-router
Version:
Modern and scalable routing for Vue applications
28 lines • 1.01 kB
JSX
import * as Vue from 'vue';
import { renderToString as vueRenderToString } from 'vue/server-renderer';
export const renderRouterToString = async ({ router, responseHeaders, App, }) => {
try {
const app = Vue.createSSRApp(App, { router });
let html = await vueRenderToString(app);
router.serverSsr.setRenderFinished();
const injectedHtml = router.serverSsr.takeBufferedHtml();
if (injectedHtml) {
html = html.replace(`</body>`, () => `${injectedHtml}</body>`);
}
return new Response(`<!DOCTYPE html>${html}`, {
status: router.stores.statusCode.get(),
headers: responseHeaders,
});
}
catch (error) {
console.error('Render to string error:', error);
return new Response('Internal Server Error', {
status: 500,
headers: responseHeaders,
});
}
finally {
router.serverSsr?.cleanup();
}
};
//# sourceMappingURL=renderRouterToString.jsx.map