Ana içeriğe geç

Özelleştirilmiş Renderleyici APIsi

Özelleştirilmiş Renderleyici API'si

bilgi

Özelleştirilmiş bir renderleyici, platforma özgü düğüm oluşturma ve manipülasyon API'leri sağlar.

createRenderer()

Özelleştirilmiş bir renderleyici oluşturur. Platforma özgü düğüm oluşturma ve manipülasyon API'leri sağlayarak, Vue'nun temel çalışma zamanını kullanarak DOM dışı ortamlara hedefleyebilirsiniz.

  • Tür

    function createRenderer<HostNode, HostElement>(
    options: RendererOptions<HostNode, HostElement>
    ): Renderer<HostElement>

    interface Renderer<HostElement> {
    render: RootRenderFunction<HostElement>
    createApp: CreateAppFunction<HostElement>
    }

    interface RendererOptions<HostNode, HostElement> {
    patchProp(
    el: HostElement,
    key: string,
    prevValue: any,
    nextValue: any,
    // geri kalanı çoğu özelleştirilmiş renderleyici için kullanılmaz
    isSVG?: boolean,
    prevChildren?: VNode<HostNode, HostElement>[],
    parentComponent?: ComponentInternalInstance | null,
    parentSuspense?: SuspenseBoundary | null,
    unmountChildren?: UnmountChildrenFn
    ): void
    insert(
    el: HostNode,
    parent: HostElement,
    anchor?: HostNode | null
    ): void
    remove(el: HostNode): void
    createElement(
    type: string,
    isSVG?: boolean,
    isCustomizedBuiltIn?: string,
    vnodeProps?: (VNodeProps & { [key: string]: any }) | null
    ): HostElement
    createText(text: string): HostNode
    createComment(text: string): HostNode
    setText(node: HostNode, text: string): void
    setElementText(node: HostElement, text: string): void
    parentNode(node: HostNode): HostElement | null
    nextSibling(node: HostNode): HostNode | null

    // isteğe bağlı, DOM'a özgü
    querySelector?(selector: string): HostElement | null
    setScopeId?(el: HostElement, id: string): void
    cloneNode?(node: HostNode): HostNode
    insertStaticContent?(
    content: string,
    parent: HostElement,
    anchor: HostNode | null,
    isSVG: boolean
    ): [HostNode, HostNode]
    }
  • Örnek

    import { createRenderer } from '@vue/runtime-core'

    const { render, createApp } = createRenderer({
    patchProp,
    insert,
    remove,
    createElement
    // ...
    })

    // `render`, düşük seviyeli API'dir
    // `createApp`, bir uygulama örneği döndürür
    export { render, createApp }

    // Vue'nun temel API'lerini yeniden dışa aktar
    export * from '@vue/runtime-core'

Vue'nun kendi @vue/runtime-dom aynı API kullanılarak uygulanmıştır. Daha basit bir uygulama için, Vue'nun kendi birim testleri için özel bir paket olan @vue/runtime-test paketine göz atın.