Vue 是一个构建用户界面的框架,它的核心是一组轻量级的、可复用的、可组合的组件,它们可以帮助开发者快速构建出功能丰富的应用。Vue 提供了一些内置指令,它们允许开发者在应用中使用特定的 HTML 属性来声明式地将行为附加到 DOM 上。
Vue 提供了很多内置指令,这些指令都有特定的功能,可以帮助开发者快速实现相应的功能。其中最常用的 Vue 指令包括 v-if、v-for、v-on、v-bind 等。
1. v-if: 这个指令允许开发者根据条件来显示或隐藏 HTML 元素。例如: <div v-if="show">This will only be displayed if show is true.</div> 2. v-for: 这个指令允许开发者遍历数组或对象并渲染出相应的 HTML 元素。例如: <ul> <li v-for="item in items">{{ item }}</li> </ul> 3. v-on: 这个指令允许开发者监听 DOM 上的事件并执行相应的 JavaScript 代码。例如: <button v-on:click="handleClick">Click Me!</button> 4. v-bind: 这个指令允许开发者将数据和 HTML 属性进行绑定(binding)。例如: <img v-bind:src="imageUrl" /> // imageUrl 是一个 JavaScript 变量
number | string
key
的特殊 attribute 主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法。而使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除/销毁 key 不存在的元素。
有相同父元素的子元素必须有独特的 key。重复的 key 会造成渲染错误。
最常见的用例是结合 v-for
:
<ul>
<li v-for="item in items" :key="item.id">...</li>
</ul>
它也可以用于强制替换元素/组件而不是重复使用它。当你遇到如下场景时它可能会很有用:
例如:
<transition>
<span :key="text">{{ text }}</span>
</transition>
当 text
发生改变时,<span>
总是会被替换而不是被修改,因此会触发过渡。
string | Function
ref
被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs
对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例:
<!-- vm.$refs.p 会是 DOM 节点 -->
<p ref="p">hello</p>
<!-- vm.$refs.child 会是子组件实例 -->
<child-component ref="child"></child-component>
<!-- 当动态绑定时,我们可以将ref定义为回调函数,显式地传递元素或组件实例 -->
<child-component :ref="(el) => child = el"></child-component>
当 v-for
用于元素或组件的时候,引用信息将是包含 DOM 节点或组件实例的数组。
关于 ref 注册时间的重要说明:因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!$refs
也是非响应式的,因此你不应该试图用它在模板中做数据绑定。
string | Object (component’s options object)
使用动态组件。
例如:
<!-- component changes when currentView changes -->
<component :is="currentView"></component>
更多的使用细节,请移步至下面的链接。
本节例子中代码使用的单文件组件语法#computed使用 getter 函数,并为从 getter 返回的值返回一个不变的响应式 ref 对象。const ...
#Data Property组件的 data 选项是一个函数。Vue 在创建新组件实例的过程中调用此函数。它应该返回一个对象,然后 Vue 会通过响...
#用 v-for 把一个数组对应为一组元素我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式...
该页面假设你已经阅读过了组件基础。如果你还对组件不太了解,推荐你先阅读它。#组件名在注册一个组件的时候,我们始终需要给它...