跳到主要内容

服务端渲染

Analog 支持在开发和生产环境构建时的服务端渲染。

转换包以实现 SSR 兼容性

有些依赖项可能需要额外的转换才能用于服务端渲染。如果你在开发过程中遇到 SSR 错误,一个选项是在 Vite 配置中吧这些包添加到 ssr.noExternal 数组中。

你可以使用 glob 范式来包括包或者库。下面是一些例子:

import { defineConfig } from 'vite';
import analog from '@analogjs/platform';

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => ({
ssr: {
noExternal: [
'apollo-angular', // npm package import
'apollo-angular/**', // npm package import along with sub-packages
'@spartan-ng/**', // libs under the npmScope inside an Nx workspace
],
},
// ...other config
}));

要了解更多关于 SSR 的外部依赖,请移步Vite 文档

禁用 SSR

SSR 默认是开启的。你可以通过在 vite.config.tsanalog() 插件里添加以下选项来禁用它并且生成仅客户端的构建:

import { defineConfig } from 'vite';
import analog from '@analogjs/platform';

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => ({
// ...other config
plugins: [analog({ ssr: false })],
}));

预渲染路由

"/" 路由在 SSR 模式下默认会被预渲染。

当用户访问应用的根目录时返回渲染的 HTML 是一个关键步骤。预渲染的路由可以自定义,但是请记住一定要包含 "/" 根路由。

import { defineConfig } from 'vite';
import analog from '@analogjs/platform';
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => ({
// ...other config
plugins: [
analog({
prerender: {
routes: ['/', '/about'],
},
}),
],
}));

你可以传入一个空数组来禁用预渲染。