自定义元素 API
VueAPI 参考
自定义元素 API {#custom-elements-api}
defineCustomElement() {#definecustomelement}
此方法接受的参数与 defineComponent 相同,但返回一个原生自定义元素类构造函数。
-
类型
tsfunction defineCustomElement( component: | (ComponentOptions & CustomElementsOptions) | ComponentOptions['setup'], options?: CustomElementsOptions ): { new (props?: object): HTMLElement } interface CustomElementsOptions { styles?: string[] // 以下选项在 3.5+ 版本中支持 configureApp?: (app: App) => void shadowRoot?: boolean nonce?: string }类型为简化版,便于阅读。
-
详情
除了常规的组件选项,
defineCustomElement()还支持一系列特定于自定义元素的选项:-
styles:一个内联 CSS 字符串数组,用于提供应注入元素 shadow root 的 CSS。 -
configureApp:一个函数,可用于配置自定义元素的 Vue 应用实例。 -
shadowRoot:boolean,默认为true。设置为false以在不带 shadow root 的情况下渲染自定义元素。这意味着自定义元素单文件组件中的<style>将不再被封装隔离。 -
nonce:string,如果提供,将在注入到 shadow root 样式标签上设置nonceattribute。
注意,这些选项也可以不作为组件本身的一部分传递,而是通过第二个参数传递:
jsimport Element from './MyElement.ce.vue' defineCustomElement(Element, { configureApp(app) { // ... } })返回值是一个自定义元素构造函数,可以使用
customElements.define()注册。 -
-
示例
jsimport { defineCustomElement } from 'vue' const MyVueElement = defineCustomElement({ /* 组件选项 */ }) // 注册自定义元素 customElements.define('my-vue-element', MyVueElement) -
参考
-
请注意,使用单文件组件时,
defineCustomElement()需要进行特殊配置。
useHost() {#usehost}
一个组合式 API 辅助函数,返回当前 Vue 自定义元素的宿主元素。
useShadowRoot() {#useshadowroot}
一个组合式 API 辅助函数,返回当前 Vue 自定义元素的 shadow root。
this.$host {#this-host}
一个选项式 API 的 property,暴露当前 Vue 自定义元素的宿主元素。
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
