# cl-vue-learning-demo **Repository Path**: code_easy/cl-vue-learning-demo ## Basic Information - **Project Name**: cl-vue-learning-demo - **Description**: 关于vue的学习总结,课程来自李南江的vue教学,链接https://www.bilibili.com/video/BV1U5411h7oH?p=4。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-01 - **Last Updated**: 2021-10-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VUE - 统一文章内容输出口径 - 所有标签语句的,统一采用 `标签语法`格式 - 实现,说的是如何使用指令 - 示例,主要是代码和效果图 ## 05-Vue数据双向传递(v-model) ### 概念 > 1. 数据双向绑定 > 默认情况下,Vue只支持数据单向传递 M->VM->V > 但是由于 Vue是基于MVVM设计模式的,所以也提供了双向传递的能力; > 在 及 元素上可以用 v-model 指令创建双向数据绑定; > > 2. 注意点: > v-model 会忽略所有表单元素的 value、checked、selected 特性的初始值, > 而总是将vue实例的数据作为数据来源。 ### 实现 > 使用``v-model`,可以实现数据的双项传递。 ``` html ``` ### 示例 - HTML代码 ``` html 05-Vue数据双向传递 {{name}} ``` - 有图有真相  ## 06-Vue指令`v-once` ### 概念 > 这个指令,可以让页面只渲染一次数据。后序数据即使被改变,视图也只是展示第一次渲染的数据。 ### 实现 在标签语句中加上这个指令就行。 ``` html 原始数据:{{name}} ``` ### 示例 - HTML代码 ``` html 06-Vue指令v-once 原始数据:{{name}} 当前数据:{{name}} ``` - 图  ## 07-Vue指令`v-cloak` ### 概念 > ``` > 1. Vue 数据绑定过程 > - 会先将未绑定数据的界面展示给用户; > - 然后再根据模型中的数据和控制的区域生成绑定数据之后的 HTML 代码 > - 最后再将绑定数据之后的 HTML 渲染到界面上 > > 正是在最终的 HTML 被生成渲染之前会先显示模板内容, > 所以如果用户网络比较慢或者网页性能较差时,用户会先看到模板内容。 > > 2. 如何解决这个问题? > 利用 v-cloak 配合 [v-cloak] {display:none} 默认先隐藏未渲染的界面; > 等到生成 HTML 渲染之后再重新显示 > > 3. v-cloak 指令作用:数据渲染之后自动显示元素 > ``` ### 实现 在标签语句上加上v-cloak即可,但是要配合csss使用 ```css ``` ```html {{name}} ``` ### 示例 - HTML代码 ``` html 07-Vue指令v-cloak {{name}} {{name}} ``` - 效果图 - 加载模版  - 会发现加了v-cloak指令的,直接展示出来了。没有像图一展示模版  ## 08-Vue指令`v-text` 和`v-html` ### 概念 > `v-text`会覆盖内容,但是不会解析HTML。 > > `v-html`会覆盖内容,会解析HTML。 ### 实现 ```html ------ ------ ------ ------ ``` ### 示例 - HTML代码 ``` html 07-Vue指令v-text-v-html 插值的方式: {{name}} 可以将指定的数据插入到指定的位置 插值的方式: {{msg}} 不会解析 HTML 标签 ------ ------ ------ ------ ``` - 图片  ## 09-Vue指令`v-if` ### 概念 > 1. `v-if` 指令 > 条件渲染:如果 `v-if` 取值是true就渲染元素,否则不渲染。 > 2. v-if 特点 > 如果条件不满足根本不会创建这个元素(重点) > 3. v-if 注意点 > v-if 可以从模型中获取数据 > v-if 可以直接赋值一个表达式 > 4. v-else 指令 > v-else 指令和 v-if 指令配合使用,当 v-if 不满足条件时渲染 v-else 中的元素内容 > 5. v-else 注意点 > v-else 不能单独出现 > v-if 和 v-else 中间不能出现其他内容 ### 实现 ``` html 优秀 良好 一般 ``` ### 示例 - HTML代码 ```html 08-Vue指令v-if 我是true 我是false 我是true 我是false 我是true 我是false 我是成年人 我是未成年 优秀 良好 一般 ``` - 效果图  ## 10-Vue指令`v-show` ### 概念 > 1. v-show指令 > v-show 和 v-if 一样都是条件渲染,取值为true就显示,false就不显示 > 2. v-if 和 v-show 区别 > v-if:只要取值为false就不会创建元素; > v-show:取值为false也会创建元素,只是如果取值为false会设置元素的display为none; > 3. v-if 和 v-show 应用场景 > 由于取值为false时 v-if 不会创建元素,所以如果需要切换元素的显示和隐藏,每次v-if 都会创建和删除元素; > 由于取值为false时 v-show 会创建元素并设置display为none,所以切换元素显示和隐藏时不会重复创建和删除 > 所以:如果开发中需要频繁切换元素显示隐藏,那么推荐使用v-show,否则使用 v-if ### 实现 ``` html 我是true 我是false ``` ### 示例 - HTML代码 ``` html 09-Vue指令v-show 我是true 我是false 我是true 我是false 我是true 我是false ``` - 效果图  ### 10-Vue指令`v-for` ### 概念 > 1. v-for 指令 > 相当于 JS 中的 for in 循环,可以根据数据多次渲染元素 > > 2. v-for 特点 > 可以遍历数组,字符,数字,对象 ### 实现 ```html {{index}} - {{value}} {{index}} - {{value}} {{index}} - {{value}} {{key}} - {{value}} ``` ### 示例 - HTML代码 ``` html 10-Vue指令v-for {{index}} - {{value}} {{index}} - {{value}} {{index}} - {{value}} {{key}} - {{value}} ``` - 效果图  ## 11-Vue指令v-bind ### 概念 > 1. v-bind 指令 > > 在开发中想要给"元素"绑定数据,我们可以使用{{}},v-text,v-html > 但是如果想要给"元素的属性"绑定数据,就必须使用 v-bind > 所以 v-bind 的作用是专门用于给"元素的属性"绑定数据的 > > 2. v-bind 格式 > v-bind:属性名称="绑定的数据" > :属性名称="绑定的数据" > > 3. v-bind 特点 > 赋值的数据可以是任意一个合法的 JS 表达式 > 例如 :属性名称="age + 1" > > 4. 注意点: > v-model 也可以将数据绑定到元素的属性,但是只局限于input、textarea、select标签 > 而想要给其他标签的属性绑定数据,就需要用到 v-bind ### 实现 注意:v-bind和:不要加空格,不然就是语法错误 ``` html ``` ### 示例 - HTML代码 ``` html 11-Vue指令v-bind {{name}} ``` - 效果图  ## 12-Vue指令v-bind-绑定类名 ### 概念 重点,绑定类名的语法是==:class== > 1. v-bind 指令的作用 > v-bind指令给"任意标签"的"任意属性"绑定数据; > 对于大部分的属性而言我们只需要直接赋值即可,例如 :value="name" > 但是对于 class 和 type 属性而言,它的格式比较特殊 > > 2. 通过 v-bind 绑定类名格式 > :class="['需要绑定类名', ...]" > > 3. 注意点: > - 直接赋值一个类名(没有放到数组中) 默认回去model中查找 > :class = "需要绑定类名" > 如果需要通过 v-bind 给 class 绑定类名,不能直接赋值 > 默认情况下 v-bind 回去 Model 中查找数据,但是 Model 中没有对应的类名 > > - 想要 v-bind 去 style 中查找类名,那么必须把类名放到数组中,且用引号包裹起来 > > - 如果是通过 v-bind 绑定类名,那么在绑定的时候可以编写三目运算符来实现按需绑定 > > - v-bind 绑定类名, 可以通过对象决定是否需要绑定 > 格式:{'需要绑定类名' : 是否绑定} > > - v-bind 绑定类名, 可以使用 Model中的对象来替换数组 > 格式:{'需要绑定类名' : 是否绑定} ### 实现 ```html 这是段落 这是段落1: 通过数组绑定 class 这是段落2 通过三目运算符绑定 class 这是段落3:通过对应绑定 class 这是段落4: 通过实例中的对象来绑定 class ``` ### 示例 - HTML代码 ``` html 12-Vue指令绑定类名 这是段落 这是段落1: 通过数组绑定 class 这是段落2 通过三目运算符绑定 class 这是段落3:通过对应绑定 class 这是段落4: 通过实例中的对象来绑定 class ``` - 效果图  ## 13-Vue指令-bind-绑定样式 #### 概念 > 1. 如何通过 v-bind 给 style 属性绑定数据 > - 将数据放到对象中 > :style="{color: 'red', 'font-size': '50px'}" > - 将数据放到Model对象中 > object:{ > color: 'red', > 'font-size': '30px' > } > > 2. 注意点: > - 如果属性名称包含 "-", 那么必须用引号括起来 > - 如果需要绑定 Model 中的多个对象,可以放到一个数组中赋值 > > - 和绑定类名一样,默认情况下 v-model 会去 Model中查询数据,默认无数据则无效 > 要使用上面 1 的方式绑定 ### 实现 ``` html 这是段落1 这是段落2,sytle = {{object}}} 这是段落3, sytle = {{[object, blueObj]}} ``` ### 示例 - HTML ``` html 13-Vue指令绑定样式 这是段落1 这是段落2,sytle = {{object}}} 这是段落3, sytle = {{[object, blueObj]}} ``` - 效果图 
这是段落
这是段落1: 通过数组绑定 class
这是段落2 通过三目运算符绑定 class
这是段落3:通过对应绑定 class
这是段落4: 通过实例中的对象来绑定 class
这是段落1
这是段落2,sytle = {{object}}}
这是段落3, sytle = {{[object, blueObj]}}