目录
Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析。在底层机制中,Vue 会将模板编译成高度优化的 JavaScript 代码。结合响应式系统,当应用状态变更时,Vue 能够智能地推导出需要重新渲染的组件的最少数量,并应用最少的 DOM 操作。
定义与简介:插值表达式是模版语言中的一种语法,用于在HTML中插入动态的内容或变量。它允许我们将数据绑定到页面上,实现动态渲染。简单来说,插值表达式就是将变量或表达式的值插入到HTML文本中。
基础用法:在HTML中使用插值表达式进行文本渲染的示例代码如下:
<div>{{ message }}div>
这里的 高级用法:在插值表达式中,可以使用JavaScript表达式来进行更加复杂的操作,例如: 这里的 动态属性绑定:模版语言允许动态地绑定HTML元素的属性,例如: 这里的 v-bind指令: 布尔属性处理:有时需要根据条件来动态添加或移除布尔类型的属性,例如: 这里的 事件绑定概述:事件绑定用于在模版语言中将特定的事件与页面上的元素进行关联,以便实现交互操作和用户响应。 v-on指令:v-on 是模版语言中用于绑定事件的指令,其简写形式为 @。例如,可以这样绑定点击事件: 事件处理方法:定义和调用事件处理方法的示例代码如下: 通过模版语言的插值表达式和文本渲染、Attribute属性渲染以及事件的绑定,可以实现动态渲染页面内容、绑定属性和处理用户交互,从而为用户提供更加丰富和动态的用户体验。 响应式是指 : 数据模型发生变化时,自动更新DOM树内容,页面上显示的内容会进行同步变化,vue3的数据模型不是自动响应式的,需要我们做一些特殊的处理 ref的定义:在Vue 3中,ref是一个用于创建响应式数据的关键字。它可以将普通的数据转换为响应式数据,并返回一个包含该数据的引用。ref是Vue 3中最基本的响应式实现方式之一。 创建与使用:以下是创建ref对象并访问其值的示例代码: 在上述示例中,我们使用 模版中的应用:在Vue 3的模板中,可以使用 在模板中直接使用 reactive的定义: 创建复杂数据结构:以下是使用 在上述示例中,我们使用 模版中的应用:在模板中可以直接访问 在模板中使用 toRef函数: 嵌套reactive对象: 在上述示例中,我们使用 条件渲染概述: 条件渲染是指根据特定条件来决定是否渲染或显示特定的内容,这在Vue应用中非常常见,比如根据用户登录状态显示不同的界面、根据数据是否存在来展示不同的信息等。 v-if指令: v-if指令是Vue中用于条件渲染的指令,它根据表达式的真假来决定是否渲染DOM元素。如果表达式为真,则元素会被渲染;如果表达式为假,则元素不会被渲染。示例如下: 在上面的例子中,如果 v-else和v-else-if指令: 除了v-if,Vue还提供了v-else和v-else-if指令来处理更复杂的条件渲染逻辑。示例如下: 在上面的例子中,根据变量type的不同取值,会渲染出不同的内容。如果type为'A',则会显示"Type A";如果type为'B',则会显示"Type B";否则会显示"Other Types"。 列表渲染概述: 列表渲染是指根据数据的内容来动态生成多个相似的元素,比如根据数据数组生成多个列表项、根据对象的属性生成多个卡片等。 v-for指令: v-for指令是Vue中用于列表渲染的指令,它可以遍历数组或对象,并根据其中的每个元素生成对应的DOM元素。示例如下 在上面的例子中,v-for指令遍历了名为items的数组,对数组中的每个元素生成一个li元素,并显示每个元素的name属性。 key属性的重要性: 在使用v-for进行列表渲染时,每个生成的DOM元素都需要有一个唯一的key属性,这样Vue才能更高效地更新DOM。key属性帮助Vue识别每个节点,并在数据发生变化时准确地重新渲染页面,以避免出现错误的DOM更新。示例如下: 在上面的例子中, 单项绑定 定义: 单项绑定是指数据从模型(Model)流向视图(View),视图根据模型中的数据进行更新,但视图的变化不会反馈回模型。这种绑定方式在传统的前端框架中很常见,比如React。 特点: 示例: 在这个例子中, 双向绑定 定义: 双向绑定是指数据在模型和视图之间双向流动,模型中的数据更新会自动反映到视图中,而用户在视图中的操作也会自动更新模型中的数据。这种绑定方式在Vue和Angular等框架中常见。 特点: 示例: 总结对比 数据流向: 适用场景: 调试难度: v-model指令是Vue中用于实现双向绑定的关键指令。它可以用于多种表单控件(如input、textarea、select等)以及自定义组件上。 使用v-model指令的语法为: 示例: 在上面的例子中,通过v-model指令将输入框和Vue实例中的message属性进行了双向绑定。当用户在输入框中输入内容时,message属性会实时更新;同时,当message属性的值发生改变时,输入框中的内容也会同步更新。 v-model指令在表单控件中的应用非常常见,以下是一些示例: 文本输入框: 复选框: 单选框: 下拉框: 计算属性概述: 计算属性是Vue.js中一种非常有用的特性,用于对数据进行计算并返回一个新的值。它可以根据依赖的数据动态地计算出新的数值,而且只有在相关数据发生变化时才会重新计算。 优势: computed选项 在Vue.js组件中,可以使用 在上面的示例中, 缓存机制 解释计算属性的缓存机制及其带来的性能优势: 计算属性具有缓存机制,即只有在相关依赖发生改变时才会重新计算。这意味着无论计算属性被多次访问,只要相关依赖数据没有发生变化,它都会立即返回之前缓存的计算结果,而不会重新执行计算逻辑。 这种缓存机制带来了以下性能优势: 通过缓存机制,计算属性能够在保证数据计算的准确性的同时提高性能,特别是在处理复杂的计算逻辑或大量数据时,能够显著地提升页面的渲染效率和用户体验。 数据监听器是前端框架(如Vue.js)中一种重要的机制,用于监测数据变化并执行相应的逻辑。它能够有效地响应数据的变化,并在数据发生改变时执行预定的操作,比如更新视图或触发其他业务逻辑。 作用和应用场景: 在Vue.js中,可以使用 在上面的示例中,当 示例: 在这个示例中,当message 是一个变量,其值将会被动态插入到 <div>{{ isTrue ? 'Yes' : 'No' }}div>
isTrue 是一个JavaScript表达式,根据条件的真假来动态渲染文本内容。1.2 Attribute属性渲染
<a v-bind:href="url">Linka>
v-bind:href 指令表示将链接的 href 属性与 url 变量进行动态绑定,从而实现动态链接地址。v-bind 是模版语言中用于动态绑定属性的指令,其简写形式为 :。上述示例中的 v-bind:href 可以简写为 :href。<input type="checkbox" v-bind:checked="isChecked">
v-bind:checked 指令将根据 isChecked 变量的真假来动态设置或移除 checked 属性。 1.3 事件的绑定
<button v-on:click="handleClick">Click mebutton>
2. 响应式基础
2.1 响应式实现关键字ref
ref函数来创建一个包含数字0的ref对象,并通过.value来访问其值。ref对象来访问其值,例如:<p>{{ count }}p>
{{ count }}来显示ref对象的值。2.2 响应式实现关键字reactive
reactive是另一种用于创建响应式数据的关键字。与ref不同,reactive用于创建包含多个属性的响应式对象,并返回一个包含这些属性的响应式代理对象。reactive创建响应式对象和数组的示例代码:reactive函数创建了一个包含多个属性的响应式对象state,其中包括count、message和list。reactive对象的属性,例如:state.count来访问reactive对象中的count属性,并使用v-for指令遍历list数组。 2.3 toRef 函数和 reactive 函数(了解)
toRef函数用于将一个响应式对象的属性转换为一个ref对象。这在需要将响应式数据作为props传递给子组件时非常有用,因为子组件可能需要对props进行修改,而props本身是只读的。以下是toRef函数的示例用法:reactive函数不仅可以创建简单的响应式对象,还可以创建嵌套的响应式对象。这在处理复杂的数据结构时非常有用,例如:reactive函数创建了一个嵌套的响应式对象nestedState,其中包含了nested对象和其内部的count属性。
3. 条件和列表渲染
3.1 条件渲染
<p v-if="isUserLoggedIn">Welcome, User!p>
isUserLoggedIn为true,那么段落元素会被渲染出来;如果isUserLoggedIn为false,那么段落元素不会被渲染。3.2 列表渲染
:key="item.id"指定了每个li元素的唯一标识,确保在列表发生变化时Vue能够正确地更新DOM。
4. 双向绑定
4.1 单项绑定和双向绑定
state中的message属性通过单项绑定传递给视图。当state中的数据变化时,视图会相应更新,但视图中的修改不会反过来影响state。4.2 v-model指令
v-model="dataProperty",其中dataProperty是Vue实例中的一个数据属性。4.3 常见使用场景
<input type="text" v-model="username" />
<input type="checkbox" v-model="isChecked" />
5. 属性计算
computed选项来定义计算属性,以便于对数据进行计算并返回结果。area被定义为一个计算属性,它根据radius的值动态计算出圆的面积。在模板中可以直接引用area属性,而不需要在模板中编写复杂的计算逻辑。
6. 数据监听器
6.1 数据监听器概述
6.2 watch选项
watch选项来定义数据监听器,以监视一个特定的数据并在其变化时执行回调函数。message属性的值发生变化时,会触发watch中定义的回调函数。可以在回调函数中访问到新值newValue和旧值oldValue,并且可以在此处执行任何需要的额外逻辑。6.3 异步操作与额外逻辑
message属性的值发生变化时,首先会执行一个模拟的异步操作(例如异步请求),然后在控制台输出相应的信息。同时,也可以在watch中执行其他需要的额外逻辑,比如更新其他相关状态或界面元素。