export { Page }

.page.js 文件可以有一个 export { Page } 页面的根(React/Vue/...)组件

vite-plugin-ssr 不对 Page 做任何事情,只是让它在 pageContext.Page 可用:

// /pages/hello.page.js
// Environment: Browser, Node.js

export { Page }

// 我们导出了一个 JSX 组件,但是我们也可以导入任何想要的东西
// 因为 `vite-plugin-ssr` 不会对 `Page` 做任何事情:它只是让它在 `pageContext.Page` 可用
function Page() {
	return <>Hello</>
}
// /renderer/_default.page.server.js
// Environment: Node.js

export { render }

import { escapeInject, dangerouslySkipEscape } from 'vite-plugin-ssr'
import renderToHtml from 'some-ui-framework'

async function render(pageContext) {
	// `Page` 在 `pageContext.Page` 中可用
	const { Page } = pageContext
	const pageHtml = await renderToHtml(Page)

	return escapeInject`<html>
    <body>
      <div id="root">
        ${dangerouslySkipEscape(pageHtml)}
      </div>
    </body>
  </html>`
}
// /renderer/_default.page.client.js
// Environment: Browser

export { render }

import { hydrateDom } from 'some-ui-framework'

async function render(pageContext) {
	// `pageContext.Page` 在浏览器中可用
	const { Page } = pageContext
	await hydrateDom(Page, document.getElementById('root'))
}