Home / File/ codegen.ts — vue Source File

codegen.ts — vue Source File

Architecture documentation for codegen.ts, a typescript file in the vue codebase. 11 imports, 2 dependents.

File typescript ServerRenderer OptimizingCompiler 11 imports 2 dependents 14 functions

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)

Subdomains

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