1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import type { ComponentRenderer } from '../../@types/renderer';
import { renderToString } from '@vue/server-renderer';
import { createSSRApp, h as createElement } from 'vue';
import { createRenderer } from './renderer';
const Vue: ComponentRenderer = {
renderStatic(Component) {
return async (props, ...children) => {
const app = createSSRApp({
components: {
Component,
},
render() {
return createElement(Component as any, props);
},
});
const html = await renderToString(app);
return html;
};
},
imports: {
vue: ['createApp', 'h: createElement'],
},
render({ Component, root, props }) {
return `const App = { render() { return createElement(${Component}, ${props} )} };
createApp(App).mount(${root});`;
},
};
const renderer = createRenderer(Vue);
export const __vue_static = renderer.static;
export const __vue_load = renderer.load;
export const __vue_idle = renderer.idle;
export const __vue_visible = renderer.visible;
|