doNotPrerender

在某些情况下,我们不想预渲染页面。 例如,显示从数据库中获取的最新新闻的页面应该在请求时渲染,不应该在构建时渲染

我们可以使用 .page.server.js#noNoPrerender 告诉 vite-plugin-ssr 从预渲染中跳过一个页面

// /pages/news.page.server.js

export const doNotPrerender = true

我们也可以在 .page.js 文件中定义 doNotPrerender,但不能在 .page.client.js 文件中定义(因为 .page.client.js 文件永远不会在 Node.js 中加载)

_default.page.

我们可以在 _default.page. 文件中定义 doNotPrerender

例如:

// /renderer/_default.page.server.js

// 默认情况下,我们的页面不会预渲染
export const doNotPrerender = true
// /pages/about-us.page.js

// 选择性开启预渲染
export const doNotPrerender = false

这对于 Domain-Driven File Structure 特别方便:

// /pages/mareting/_default.page.server.js

// 我们使用域名驱动文件系统,并且 `_default.page.server.js` 应用于我们所有的 marketing 页面

// 为所有 marketing 页面开启预渲染
export const doNotPrerender = false

条件预渲染

我们可以有条件地预渲染页面:

// /renderer/_default.page.server.js

export const doNotPrerender = isCmsPreview() ? true : false

这对于预览 CMS 页面特别有用(我们不想预渲染 CMS 预览部署)。

请注意,预渲染() hook 总是被调用,而不管 doNotPrerender 是什么。如果我们也想有条件地调用 prerender() hook:

export const doNotPrerender = someCondition() ? true : false
export const prerender = doNotPrerender ? undefined : myPrerenderHook