- 渲染方法返回最终的html(服务端)或vue实例(客户端)
- 通常是将页面使用渲染函数进行渲染,然后在附上一些其他内容(如导航栏等)
定义默认的渲染方式
我们不必为每个页面创建 .page.client.js 和 .page.server.js 我们可以创建一个默认应用到所有页面的 /renderer/_default.page.client.js 和 /renderer/_default.page.server.js
实际上我们最后创建的两个文件是 /renderer/_default.page.client.js 和 /renderer/_default.page.server.js 这意味着我们可以通过定义一个新的 .page.vue 文件来创建一个新的页面(.page.route.js文件是可选的)
_default.page. 文件可以被覆盖。比如,我们可以在一些页面中使用不同的 UI 框架(如 React)覆盖 render() hook
示例
child::
实例
// /renderer/_default.page.server.js // Environment: Node.js import { createSSRApp, h } from "vue"; import { renderToString } from "@vue/server-renderer"; import { escapeInject, dangerouslySkipEscape } from "vite-plugin-ssr"; export { render }; async function render(pageContext) { const { Page, pageProps } = pageContext; const app = createSSRApp({ render: () => h(Page, pageProps),//渲染传入的页面 }); const appHtml = await renderToString(app); const title = "Vite SSR"; return escapeInject`<!DOCTYPE html> <html> <head> <title>${title}</title> </head> <body> <div id="app">${dangerouslySkipEscape(appHtml)}</div> </body> </html>`; }// /renderer/_default.page.client.js // Environment: Browser import { createSSRApp, h } from "vue"; export { render }; async function render(pageContext) { const { Page, pageProps } = pageContext; const app = createSSRApp({ render: () => h(Page, pageProps), }); app.mount("#app"); }指向原始笔记的链接Nuxt 将这一点抽象出来,让我们可以更快上手,但也意味着我们失去了对应用程序架构核心部分的控制, 我们最终会在 Nuxt 限制性的黑盒上失去更多时间 这种级别的控制使我们 轻松自然 地集成我们想要的任何工具(Vuex, GraphQL, Service Worker, …)