Skip to content
On this page

الواجهة البرمجية للمصير المخصص

()createRenderer

تنشئ المصير المخصص. من خلال توفير منصة لإنشاء العقد والتلاعب بالـواجهة البرمجية، يمكنك الاستفادة من وحدة التشغيل الأساسية لـ Vue لاستهداف بيئات غير DOM.

  • النوع

    ts
    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,
        // the rest is unused for most custom renderers
        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
    
      // اختيارية، خاصة بالـ DOM
      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]
    }
  • مثال

    js
    import { createRenderer } from '@vue/runtime-core'
    
    const { render, createApp } = createRenderer({
      patchProp,
      insert,
      remove,
      createElement
      // ...
    })
    
    // `render` هي واجهة برمجية منخفضة المستوى
    // `createApp` تعيد نسخة تطبيق  
    export { render, createApp }
    
    // إعادة تصدير الواجهة البرمجية للنواة الخاصة بـ Vue
    export * from '@vue/runtime-core'

    vue/runtime-dom@ الخاص بـ Vue مُنفذ باستخدام نفس الواجهة البرمجية. للحصول على شيفرة تنفيذية أبسط، تحقق من vue/runtime-test@ وهو حزمة خاصة لاختبار وحدات Vue.

الواجهة البرمجية للمصير المخصص has loaded