创新互联建站云计算的互联网服务提供商,拥有超过13年的服务器租用、多线服务器托管、云服务器、虚拟主机、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
is
prop 用法仅限于保留的
标记。v-is
指令来支持 2.x 用例,其中在原生元素上使用了 v-is
来处理原生 HTML 解析限制。如果我们想添加在 Vue 外部定义的自定义元素 (例如使用 Web 组件 API),我们需要“指示”Vue 将其视为自定义元素。让我们以下面的模板为例。
在 Vue 2.x 中,将标记作为自定义元素白名单是通过 Vue.config.ignoredElements
:
// 这将使Vue忽略在Vue外部定义的自定义元素
// (例如:使用 Web Components API)
Vue.config.ignoredElements = ['plastic-button']
在 Vue 3.0 中,此检查在模板编译期间执行指示编译器将
视为自定义元素:
isCustomElement
传递给 Vue 模板编译器,如果使用 vue-loader
,则应通过 vue-loader
的 compilerOptions
选项传递: // webpack 中的配置
rules: [
{
test: /\.vue$/,
use: 'vue-loader',
options: {
compilerOptions: {
isCustomElement: tag => tag === 'plastic-button'
}
}
}
// ...
]
app.config.isCustomElement
传递: const app = Vue.createApp({})
app.config.isCustomElement = tag => tag === 'plastic-button'
需要注意的是,运行时配置只会影响运行时模板编译——它不会影响预编译的模板。
自定义元素规范提供了一种将自定义元素用作自定义内置模板的方法,方法是向内置元素添加 is
属性:
Vue 对 is
特殊 prop 的使用是在模拟 native attribute 在浏览器中普遍可用之前的作用。但是,在 2.x 中,它被解释为渲染一个名为 plastic-button
的 Vue 组件,这将阻止上面提到的自定义内置元素的原生使用。
在 3.0 中,我们仅将 Vue 对 is
属性的特殊处理限制到
tag。
tag 上使用时,它的行为将与 2.x 中完全相同;
bar
组件。is
prop 渲染 foo
组件。is
选项传递给 createElement
调用,并作为原生 attribute 渲染,这支持使用自定义的内置元素。
plastic-button
组件。 document.createElement('button', { is: 'plastic-button' })
v-is
用于 DOM 内模板解析解决方案提示:本节仅影响直接在页面的 HTML 中写入 Vue 模板的情况。 在 DOM 模板中使用时,模板受原生 HTML 解析规则的约束。一些 HTML 元素,例如
,
,
和