Home / Function/ createRenderer() — vue Function Reference

createRenderer() — vue Function Reference

Architecture documentation for the createRenderer() function in create-renderer.ts from the vue codebase.

Entity Profile

Dependency Diagram

graph TD
  1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52["createRenderer()"]
  53b05d28_585e_4d3e_ad81_d6a7ef6875f2["create-renderer.ts"]
  1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52 -->|defined in| 53b05d28_585e_4d3e_ad81_d6a7ef6875f2
  12e2c88e_c7c5_fea0_a285_dc96ab9156f5["createBundleRendererCreator()"]
  12e2c88e_c7c5_fea0_a285_dc96ab9156f5 -->|calls| 1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52
  7ae3edb4_84c6_0281_9ecf_c1bb0face36e["createRenderFunction()"]
  1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52 -->|calls| 7ae3edb4_84c6_0281_9ecf_c1bb0face36e
  f07ce837_f1b1_3c7f_1e83_fc7a3e6ac523["bindRenderFns()"]
  1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52 -->|calls| f07ce837_f1b1_3c7f_1e83_fc7a3e6ac523
  46da04ac_8d5c_f991_fddd_ba38b64b6398["createPromiseCallback()"]
  1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52 -->|calls| 46da04ac_8d5c_f991_fddd_ba38b64b6398
  208f6731_ceac_754f_49df_75211ecf996c["createWriteFunction()"]
  1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52 -->|calls| 208f6731_ceac_754f_49df_75211ecf996c
  c2756fe6_1f1e_29d1_4e0a_75be9f92ec3b["render()"]
  1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52 -->|calls| c2756fe6_1f1e_29d1_4e0a_75be9f92ec3b
  0e1a08dc_34b7_e3a6_2c6e_9ccddca3d0de["createStream()"]
  1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52 -->|calls| 0e1a08dc_34b7_e3a6_2c6e_9ccddca3d0de
  style 1c60f0eb_7fcc_3a6b_d886_ed0ac8152d52 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/server-renderer/src/create-renderer.ts lines 43–164

export function createRenderer({
  modules = [],
  directives = {},
  isUnaryTag = () => false,
  template,
  inject,
  cache,
  shouldPreload,
  shouldPrefetch,
  clientManifest,
  serializer
}: RenderOptions = {}): Renderer {
  const render = createRenderFunction(modules, directives, isUnaryTag, cache)
  const templateRenderer = new TemplateRenderer({
    template,
    inject,
    // @ts-expect-error
    shouldPreload,
    // @ts-expect-error
    shouldPrefetch,
    clientManifest,
    serializer
  })

  return {
    renderToString(
      component: Component,
      context?: any,
      cb?: any
    ): Promise<string> {
      if (typeof context === 'function') {
        cb = context
        context = {}
      }
      if (context) {
        templateRenderer.bindRenderFns(context)
      }

      // no callback, return Promise
      let promise
      if (!cb) {
        ;({ promise, cb } = createPromiseCallback())
      }

      let result = ''
      const write = createWriteFunction(text => {
        result += text
        return false
      }, cb)
      try {
        // @ts-expect-error TODO improve
        render(component, write, context, err => {
          if (err) {
            return cb(err)
          }
          if (context && context.rendered) {
            context.rendered(context)
          }
          if (template) {
            try {
              const res = templateRenderer.render(result, context)
              if (typeof res !== 'string') {
                // function template returning promise
                res.then(html => cb(null, html)).catch(cb)
              } else {
                cb(null, res)
              }
            } catch (e: any) {
              cb(e)
            }
          } else {
            cb(null, result)
          }
        })
      } catch (e: any) {
        cb(e)
      }

      return promise
    },

Subdomains

Frequently Asked Questions

What does createRenderer() do?
createRenderer() is a function in the vue codebase, defined in packages/server-renderer/src/create-renderer.ts.
Where is createRenderer() defined?
createRenderer() is defined in packages/server-renderer/src/create-renderer.ts at line 43.
What does createRenderer() call?
createRenderer() calls 6 function(s): bindRenderFns, createPromiseCallback, createRenderFunction, createStream, createWriteFunction, render.
What calls createRenderer()?
createRenderer() is called by 1 function(s): createBundleRendererCreator.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free