TemplateRenderer Class — vue Architecture
Architecture documentation for the TemplateRenderer class in index.ts from the vue codebase.
Entity Profile
Dependency Diagram
graph TD a6b6f41b_6598_1b32_00b3_8bbaa08b8c64["TemplateRenderer"] dd60f8d3_0510_6c88_43e7_0031a6d72263["index.ts"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|defined in| dd60f8d3_0510_6c88_43e7_0031a6d72263 4f56eba8_4bcc_ea76_3d31_b69c48b1836e["constructor()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| 4f56eba8_4bcc_ea76_3d31_b69c48b1836e f07ce837_f1b1_3c7f_1e83_fc7a3e6ac523["bindRenderFns()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| f07ce837_f1b1_3c7f_1e83_fc7a3e6ac523 c2756fe6_1f1e_29d1_4e0a_75be9f92ec3b["render()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| c2756fe6_1f1e_29d1_4e0a_75be9f92ec3b f44f112c_5db8_7334_0114_a66283aafe69["renderStyles()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| f44f112c_5db8_7334_0114_a66283aafe69 1e33fa19_964c_fc1d_b475_9148bf079077["renderResourceHints()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| 1e33fa19_964c_fc1d_b475_9148bf079077 c5a33546_28a8_ada6_eaf0_9eccdf8cec76["getPreloadFiles()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| c5a33546_28a8_ada6_eaf0_9eccdf8cec76 c77d7f70_19ea_6ee5_b5a1_f39fc8c5b2c1["renderPreloadLinks()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| c77d7f70_19ea_6ee5_b5a1_f39fc8c5b2c1 1942cea0_d824_508f_4ddc_fb5cf2567299["renderPrefetchLinks()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| 1942cea0_d824_508f_4ddc_fb5cf2567299 1788e29c_e4bb_9fb7_3ffa_5decd1d21123["renderState()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| 1788e29c_e4bb_9fb7_3ffa_5decd1d21123 0887ee34_8d99_7e8a_1cbb_dc5cefba6b9d["renderScripts()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| 0887ee34_8d99_7e8a_1cbb_dc5cefba6b9d 3884fbd0_8831_d753_c6b2_9634b8a270c5["getUsedAsyncFiles()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| 3884fbd0_8831_d753_c6b2_9634b8a270c5 0e1a08dc_34b7_e3a6_2c6e_9ccddca3d0de["createStream()"] a6b6f41b_6598_1b32_00b3_8bbaa08b8c64 -->|method| 0e1a08dc_34b7_e3a6_2c6e_9ccddca3d0de
Relationship Graph
Source Code
packages/server-renderer/src/template-renderer/index.ts lines 42–280
export default class TemplateRenderer {
options: TemplateRendererOptions
inject: boolean
parsedTemplate: ParsedTemplate | Function | null
//@ts-expect-error
publicPath: string
//@ts-expect-error
clientManifest: ClientManifest
//@ts-expect-error
preloadFiles: Array<Resource>
//@ts-expect-error
prefetchFiles: Array<Resource>
//@ts-expect-error
mapFiles: AsyncFileMapper
serialize: Function
constructor(options: TemplateRendererOptions) {
this.options = options
this.inject = options.inject !== false
// if no template option is provided, the renderer is created
// as a utility object for rendering assets like preload links and scripts.
const { template } = options
this.parsedTemplate = template
? typeof template === 'string'
? parseTemplate(template)
: template
: null
// function used to serialize initial state JSON
this.serialize =
options.serializer ||
(state => {
return serialize(state, { isJSON: true })
})
// extra functionality with client manifest
if (options.clientManifest) {
const clientManifest = (this.clientManifest = options.clientManifest)
// ensure publicPath ends with /
this.publicPath =
clientManifest.publicPath === ''
? ''
: clientManifest.publicPath.replace(/([^\/])$/, '$1/')
// preload/prefetch directives
this.preloadFiles = (clientManifest.initial || []).map(normalizeFile)
this.prefetchFiles = (clientManifest.async || []).map(normalizeFile)
// initial async chunk mapping
this.mapFiles = createMapper(clientManifest)
}
}
bindRenderFns(context: Record<string, any>) {
const renderer: any = this
;['ResourceHints', 'State', 'Scripts', 'Styles'].forEach(type => {
context[`render${type}`] = renderer[`render${type}`].bind(
renderer,
context
)
})
// also expose getPreloadFiles, useful for HTTP/2 push
context.getPreloadFiles = renderer.getPreloadFiles.bind(renderer, context)
}
// render synchronously given rendered app content and render context
render(
content: string,
context: Record<string, any> | null
): string | Promise<string> {
const template = this.parsedTemplate
if (!template) {
throw new Error('render cannot be called without a template.')
}
context = context || {}
if (typeof template === 'function') {
return template(content, context)
}
if (this.inject) {
return (
Domain
Source
Frequently Asked Questions
What is the TemplateRenderer class?
TemplateRenderer is a class in the vue codebase, defined in packages/server-renderer/src/template-renderer/index.ts.
Where is TemplateRenderer defined?
TemplateRenderer is defined in packages/server-renderer/src/template-renderer/index.ts at line 42.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free