Vue 是一个构建用户界面的框架,它可以帮助开发者快速构建出功能丰富的应用程序。Vue 允许开发者在元素上添加自定义属性,以便在应用程序中使用这些属性。
Vue 中的自定义属性是使用 v-bind 指令来定义的,该指令允许开发者将数据绑定到 HTML 元素上。例如,如果要为一个 div 元素添加一个名为 data-id 的自定义属性,可以使用以下代码:
<div v-bind:data-id="123"></div>
在这里,v-bind 是 Vue 用于数据绑定的指令,data-id 是要创建的自定义属性名称,而 123 是要存储在该属性中的数据。当 Vue 处理此代码时,会将 data-id 属性附加到 div 元素上,并将其值设置为 123 。
此外,Vue 还允许开发者使用 v-on 来监听 DOM 事件并执行相应的回调函数。例如,如果要监听 div 元素上的 click 事件并打印出“clicked”字样:
<div v-on:click="printMessage">Click Me!</div> // JavaScript code methods: { printMessage() { console.log('clicked'); } }
is
prop 用法仅限于保留的 <component>
标记。v-is
指令来支持 2.x 用例,其中在原生元素上使用了 v-is
来处理原生 HTML 解析限制。如果我们想添加在 Vue 外部定义的自定义元素 (例如使用 Web 组件 API),我们需要“指示”Vue 将其视为自定义元素。让我们以下面的模板为例。
<plastic-button></plastic-button>
在 Vue 2.x 中,将标记作为自定义元素白名单是通过 Vue.config.ignoredElements
:
// 这将使Vue忽略在Vue外部定义的自定义元素
// (例如:使用 Web Components API)
Vue.config.ignoredElements = ["plastic-button"]
在 Vue 3.0 中,此检查在模板编译期间执行指示编译器将 <plastic-button>
视为自定义元素:
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
属性:
<button is="plastic-button">点击我!</button>
Vue 对 is
特殊 prop 的使用是在模拟 native attribute 在浏览器中普遍可用之前的作用。但是,在 2.x 中,它被解释为渲染一个名为 plastic-button
的 Vue 组件,这将阻止上面提到的自定义内置元素的原生使用。
在 3.0 中,我们仅将 Vue 对 is
属性的特殊处理限制到 <component>
tag。
<component>
tag 上使用时,它的行为将与 2.x 中完全相同; <foo is="bar" />
bar
组件。is
prop 渲染 foo
组件。is
选项传递给 createElement
调用,并作为原生 attribute 渲染,这支持使用自定义的内置元素。 <button is="plastic-button">点击我!</button>
plastic-button
组件。 document.createElement("button", { is: "plastic-button" })
v-is
用于 DOM 内模板解析解决方案提示:本节仅影响直接在页面的 HTML 中写入 Vue 模板的情况。 在 DOM 模板中使用时,模板受原生 HTML 解析规则的约束。一些 HTML 元素,例如
<ul&
,<ol&
,<table&
和<select&
对它们内部可以出现的元素有限制,和一些像<li&
,<tr&
,和<option&
只能出现在某些其他元素中。
在 Vue 2 中,我们建议通过在原生 tag 上使用 is
prop 来解决这些限制:
<table>
<tr is="blog-post-row"></tr>
</table>
随着 is
的行为变化,我们引入了一个新的指令 v-is
,用于解决这些情况:
<table>
<tr v-is=""blog-post-row""></tr>
</table>
WARNING
v-is
函数像一个动态的 2.x :is
绑定——因此,要按注册名称渲染组件,其值应为 JavaScript 字符串文本:
<!-- 不正确,不会渲染任何内容 -->
<tr v-is="blog-post-row"></tr>
<!-- 正确 -->
<tr v-is=""blog-post-row""></tr>
config.ignoredElements
与 vue-loader
的 compilerOptions
(使用 build 步骤) 或 app.config.isCustomElement
(使用动态模板编译)<component>
tags 与 is
用法更改为 <component is="...">
(对于 SFC 模板) 或 v-is
(对于 DOM 模板)。#概览下面是对变更的简要总结:API 已重命名,以便更好地与组件生命周期保持一致自定义指令将由子组件通过 v-bind="$attrs"更多...
XHTML 概要本教程已经向你教授了如何创建更严谨纯净的 HTML 页面。你已经知道所有的 XHTML 元素都必须被正确地嵌套,XHTML 必须...
HTML列表HTML 无序列表ul 元素表示无序列表。 ul 元素中的项目使用 li 元素表示。元素没有在HTML5中定义任何属性,并且您使用CSS...
嵌套错误可能引起的问题在我们使用各种浏览器时,时常发现即使不按照标准去嵌套也不会有大的错误问题,这就给我们带来了一个思考...
你已经完成了 HTML 的学习,下一步该学习什么呢? HTML 总结 本教程已教你如何使用 HTML 创建站点。 HTML 是一种在 Web 上使用的...