codegen.ts — vue Source File
Architecture documentation for codegen.ts, a typescript file in the vue codebase. 11 imports, 2 dependents.
Entity Profile
Dependency Diagram
graph LR d70222cb_3265_c3fc_c0cf_09247995ea9a["codegen.ts"] 90d3f44d_ff5a_6ebd_69e4_9cea3949738e["modules.ts"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> 90d3f44d_ff5a_6ebd_69e4_9cea3949738e 86a1b3ca_53d9_9a22_6f43_003536900863["genAttrSegments"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> 86a1b3ca_53d9_9a22_6f43_003536900863 8b12e37d_7ab6_437f_93c1_1c031b654fda["genDOMPropSegments"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> 8b12e37d_7ab6_437f_93c1_1c031b654fda 8dc601ee_8b46_b0a6_f4e9_7332b2a6e50c["genClassSegments"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> 8dc601ee_8b46_b0a6_f4e9_7332b2a6e50c c5193222_074c_cdf9_922f_ba4ba8f6455b["genStyleSegments"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> c5193222_074c_cdf9_922f_ba4ba8f6455b 97356b81_727c_45c1_8d6a_82da26a8edcd["applyModelTransform"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> 97356b81_727c_45c1_8d6a_82da26a8edcd a0033b88_b768_84c8_da01_e6315f54737c["util.ts"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> a0033b88_b768_84c8_da01_e6315f54737c 1e08374e_4b7f_6901_4657_b7f1d04e4395["escape"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> 1e08374e_4b7f_6901_4657_b7f1d04e4395 c246f9b9_73ff_c006_0f1d_57169c68facd["optimizer.ts"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> c246f9b9_73ff_c006_0f1d_57169c68facd b36266ce_99dc_d616_0b1f_4d6a196dc37f["index"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> b36266ce_99dc_d616_0b1f_4d6a196dc37f 47ae9f26_59d1_fab2_349f_966f5d15495a["compiler"] d70222cb_3265_c3fc_c0cf_09247995ea9a --> 47ae9f26_59d1_fab2_349f_966f5d15495a b07dc083_d74f_670a_70c5_76b4dd72b30c["index.ts"] b07dc083_d74f_670a_70c5_76b4dd72b30c --> d70222cb_3265_c3fc_c0cf_09247995ea9a 90d3f44d_ff5a_6ebd_69e4_9cea3949738e["modules.ts"] 90d3f44d_ff5a_6ebd_69e4_9cea3949738e --> d70222cb_3265_c3fc_c0cf_09247995ea9a style d70222cb_3265_c3fc_c0cf_09247995ea9a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
// The SSR codegen is essentially extending the default codegen to handle
// SSR-optimizable nodes and turn them into string render fns. In cases where
// a node is not optimizable it simply falls back to the default codegen.
import {
genIf,
genFor,
genData,
genText,
genElement,
genChildren,
CodegenState
} from 'compiler/codegen/index'
import {
genAttrSegments,
genDOMPropSegments,
genClassSegments,
genStyleSegments,
applyModelTransform
} from './modules'
import { escape } from '../util'
import { optimizability } from './optimizer'
import type { CodegenResult } from 'compiler/codegen/index'
import { ASTElement, ASTNode, CompilerOptions } from 'types/compiler'
export type StringSegment = {
type: number
value: string
}
// segment types
export const RAW = 0
export const INTERPOLATION = 1
export const EXPRESSION = 2
export function generate(
ast: ASTElement | void,
options: CompilerOptions
): CodegenResult {
const state = new CodegenState(options)
const code = ast ? genSSRElement(ast, state) : '_c("div")'
return {
render: `with(this){return ${code}}`,
staticRenderFns: state.staticRenderFns
}
}
function genSSRElement(el: ASTElement, state: CodegenState): string {
if (el.for && !el.forProcessed) {
return genFor(el, state, genSSRElement)
} else if (el.if && !el.ifProcessed) {
return genIf(el, state, genSSRElement)
} else if (el.tag === 'template' && !el.slotTarget) {
return el.ssrOptimizability === optimizability.FULL
? genChildrenAsStringNode(el, state)
: genSSRChildren(el, state) || 'void 0'
}
// ... (201 more lines)
Domain
Subdomains
Functions
Types
Dependencies
Imported By
Source
Frequently Asked Questions
What does codegen.ts do?
codegen.ts is a source file in the vue codebase, written in typescript. It belongs to the ServerRenderer domain, OptimizingCompiler subdomain.
What functions are defined in codegen.ts?
codegen.ts defines 14 function(s): childrenToSegments, elementToOpenTagSegments, elementToSegments, elementToString, flattenSegments, genChildrenAsStringNode, genNormalElement, genSSRChildren, genSSRElement, genSSRNode, and 4 more.
What does codegen.ts depend on?
codegen.ts imports 11 module(s): applyModelTransform, compiler, escape, genAttrSegments, genClassSegments, genDOMPropSegments, genStyleSegments, index, and 3 more.
What files import codegen.ts?
codegen.ts is imported by 2 file(s): index.ts, modules.ts.
Where is codegen.ts in the architecture?
codegen.ts is located at packages/server-renderer/src/optimizing-compiler/codegen.ts (domain: ServerRenderer, subdomain: OptimizingCompiler, directory: packages/server-renderer/src/optimizing-compiler).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free