RenderContext

类型

1import serialize from 'serialize-javascript';
2import type { Gez } from './gez';
3/**
4 * 渲染的参数
5 */
6export interface RenderContextOptions {
7    /**
8     * 静态资产的公共路径,可以根据业务的上下文来动态设置不同的路径。
9     */
10    base?: string;
11    /**
12     * gez.render() 函数执行时,会调用 entry.server.ts 文件导出的名称。
13     */
14    entryName?: string;
15    /**
16     * 传递给 RenderContext 对象的 params 字段。
17     */
18    params?: Record<string, any>;
19}
20/**
21 * 渲染上下文
22 */
23export declare class RenderContext {
24    /**
25     * Gez 的实例。
26     */
27    gez: Gez;
28    /**
29     * 重定向地址。
30     */
31    redirect: string | null;
32    /**
33     * 响应的状态码。
34     */
35    status: number | null;
36    private _html;
37    /**
38     * 参数传入的 base。
39     */
40    readonly base: string;
41    /**
42     * 参数传入的 params。
43     */
44    readonly params: Record<string, any>;
45    /**
46     * 参数传入的 entryName。
47     */
48    readonly entryName: string;
49    /**
50     * 服务端渲染过程中,收集模块执行过程中的 import.meta 对象。
51     */
52    importMetaSet: Set<ImportMeta>;
53    /**
54     * importMetaSet 收集完成后,调用 rc.commit() 函数时,会更新这个对象的信息。
55     */
56    files: RenderFiles;
57    constructor(gez: Gez, options?: RenderContextOptions);
58    /**
59     * 响应的 html 内容。
60     */
61    get html(): string;
62    set html(html: string);
63    /**
64     * 透传 https://github.com/yahoo/serialize-javascript
65     */
66    serialize(input: any, options?: serialize.SerializeJSOptions): any;
67    /**
68     * 在 window 对象,注入一个 JS 变量对象,data 必须是可以被序列化的。
69     */
70    state(varName: string, data: Record<string, any>): string;
71    /**
72     * 同构应用渲染完成后,提交模块依赖更新 files 对象。
73     */
74    commit(): Promise<void>;
75    /**
76     * 根据 files 生成 JS 和 CSS 文件的预加载代码。
77     */
78    preload(): string;
79    /**
80     * 根据 files 生成服务端首屏加载的 CSS。
81     */
82    css(): string;
83    /**
84     * 根据 files 生成 importmap 相关代码。
85     */
86    importmap(): string;
87    /**
88     * 根据 files 生成模块入口执行代码。
89     */
90    moduleEntry(): string;
91    /**
92     * 根据 files 生成 ESM 模块预加载代码。
93     */
94    modulePreload(): string;
95}
96/**
97 * 服务端渲染处理函数。
98 */
99export type ServerRenderHandle = (render: RenderContext) => Promise<void>;
100/**
101 * 当前页面渲染的文件
102 */
103export interface RenderFiles {
104    /**
105     * CSS 文件列表。
106     */
107    css: string[];
108    /**
109     * ESM 模块列表。
110     */
111    modulepreload: string[];
112    /**
113     * importmap.js 文件列表。
114     */
115    importmap: string[];
116    /**
117     * 全部的 JS 文件列表,包含 modulepreload 和 importmap。
118     */
119    js: string[];
120    /**
121     * 除了 JS 和 CSS 之外的其它文件列表。
122     */
123    resources: string[];
124}
ON THIS PAGE