我要悄悄的学Vue,然后找一份工作先(3).

这是学习Vue的第三天, 很快的,不知道是不是我觉得这个Vue的语法
感觉很像Django的模板语法一样, 个人感觉很舒服, 都可以直接套过来使用就行了.

条件判断

Vue里面也有条件判断, 这看起来和其他的框架语言是一致的.

  1. v-if
    v-if = “表达式/布尔值”
    如果表达式计算为true, 那么dom就会将这个标签渲染出来
    如果表达式计算为false, 那么dom就不会渲染出来
    v-else
    与 v-if 一起用, 用于条件为 false 执行的函数
    v-else-if
    用于第三个选择情况下
    Eg:
<h2 v-if="isTrue">这是对的情况下</h2>
<h2 v-else>这是错的情况下</h2>
  1. 使用 key 去管理复用的元素
    比如这个案例:
<h2>登陆小测试</h2>
<span v-if="isUser">
  <label for="username">帐号登陆:</label>
  <input type="text" id="username" placeholder="请输入用户账号" key="username">
</span>
<span v-else>
  <label for="email">邮箱登陆:</label>
  <input type="email" id="email" placeholder="请输入用户邮箱帐号" key="email">
</span>
<button @click="isUser=!isUser">切换登陆方式</button>

个人理解:
  在这2个条件下,如果发生布尔值的变化, Vue内部会就地更新这些东西, 比如说这些 input 标签,
如果不加key值, 那么Vue会选择直接用上面生成的,简单的对比一下属性更新就完事了,如果加了 key,
且这个key得保持唯一性, 那么Vue内部就会进行标签的替换, Vue官网建议我们添加这个key属性,所以
也要加. 而没有添加 key属性的标签会被高效的复用.
  1. v-if 和 v-show 的区别
    v-if 根据布尔值来决定是否渲染出来这个标签
    v-show 是更改元素的 display 样式,将其显示还是隐藏.
    如果效果切换很频繁, 推荐使用 v-show 来进行判断, 这样会加快运行的效率
    其他情况下, 我们还是使用v-if进行逻辑判断,然后是否渲染.
循环遍历

同样,Vue里面也是可以循环遍历, 可以遍历的包括数组, 对象…
这个很像 python 的 for…in 遍历
使用场景: 那些标签需要重复n次,那么就在这个标签的第一个里面加上v-for

  1. v-for 遍历数组
    num = [1, 2, 3]
- 常规遍历: v-for = "n in num"
- 拿到值和索引值:  v-for = "(n, index) in num"
  1. v-for 遍历对象
obj =  {name:"bob", age:14},
- 常规遍历:  v-for = "item  in obj"
- 拿到值和键  v-for = "(item, key) in obj"
- 拿到值,键和索引值  v-for="(item, key, index) in obj"

综合遍历:
obj = [
  {name:"bob", age:14},
  {name:"mary", age:13},
  {name:"Tom", age:12},
]
<ul v-for="item in obj">
  <li v-for="(value, key) in item">{{key}}:{{value}}</li>
</ul>
  1. v-for 中绑定 :key 的区别
    个人理解:
    key的作用,同样也是打断Vue的高效复用问题, 如果不加的key属性的话,
    Vue会选择就地更新这些改变的元素, 而不会选择移动元素, 场景一般在Vue管理的数组,
    然后你去操作这个数组, 之后Vue管理的虚拟dom是如果改变的,
    为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素
    ,需要为每项提供一个唯一 key, 这样就会不会就地更新了.
响应式的js数组方法

对数组的操作方法中, 有些是响应式的,就是更改之后页面也会随之变化
记录一下这些方法:

    // 1. push 是响应式的  我们来试试看  (在最后面添加元素)
    // this.letter.push("f");
    // 2. pop  是响应式的 我们来试试看  (删除最后面的元素)
    // this.letter.pop();
    // 3. 通过元素下标操作不是响应式的
    // this.letter[0] = "不是的";
    // 4. shift  是响应式的   (删除最前面的元素)
    // this.letter.shift();
    // 5. unshift 是响应式的,  (在最前面添加元素)
    // this.letter.unshift("I will sit first !");
    // 6.  splice   是响应式的,  而且这个方法 他有三个功能
    //  splice(开始位置, 删除个数, 备选元素)
    // 第一个参数为开始点, 对应索引下标
    // 当第二个参数, 没有的时候, 表示删除功能, 且删除 start 后面所有的
    // 当第二个参数, 有的时候, 且只有第一和第二个参数的时候, 表示删除, 到第二个元素位置
    // 当第二个参数为0的时候, 表示插入, 需要添加第三个参数作为插入的元素, 元素可以多个,逗号隔开
    // 当第二个参数, 有且不为0的时候, 添加第三个参数,且第三个参数长度大于第二个参数, 表示替换, 第三个参数表示替换的元素
    // 替换可以理解为, 先删除, 在添加
    // this.letter.splice(1);
    // this.letter.splice(1, 0, "f", 'g'); // 添加
    // this.letter.splice(1, 2, 'f', 'g')    // 替换 
    // 7. sort  是响应式的, 排序
    // this.letter.sort();
    // 8. reverse 反转数组  也是响应式的
    // this.letter.reverse();
    // 9. 使用Vue内部的一个方法   这个办法是Vue封装在它内部的一个 
    // Vue.set(对象,索引值, 备选的值 )
    //Vue.set(this.letter, 0, "hello world");
js的高级函数-(函数式编程)
好像不仅仅是js中存在这些高阶函数, 在其他语言中, 这些函数也是有的.
这里我跟着老师,再次学习了filter, map, reduce 这些高阶函数

// let num = [1, 2, 3, 4, 5, 6, 7, 8];
// 需求1. 找出这个数组里面所有的偶数
//  常规方法
// let newNum =[];
// for (const n of num) {
//   if(n % 2 ==0){
//     newNum.push(n);
//   }
// }

// 高级函数 filter 方法
// let newNum = num.filter(function(n){
//   return  n % 2 == 0;
// })
// let newNum = num.filter(n => n%2 ==0 );
// console.log(newNum);

// 需求2. 将所有偶数扩大2倍
//  常规方法
// let newNum =[];
// for (const n of num) {
//   if(n % 2 ==0){
//     newNum.push(n * 2);
//   }
// }
// 高级函数 map 的使用
// let newNum = num.map(function(n){return n * 2});

// 需求3. 合计所有数
//  常规方法
// let result = 0;
// for (const n of num) {
//   if(n % 2 ==0){
//     result += n * 2;
//   }
// }
// 高阶函数 reduce 的使用
// let result = num.reduce(function(priValue, n){return priValue + n}, 0)
// console.log(result);

// 合起来使用就是这样的链式   
// let result = num.filter(n => n % 2 == 0).map( n => n ** 2).reduce((priValue, n) => priValue + n ,0);

// let result = num.filter(function(n){
//   return n % 2 == 0
// }).map(function(n){
//   return n ** 2
// }).reduce(function(priValue, n){
//   return priValue + n
// } ,0)

// console.log(result);

包括条件判断,循环遍历,响应式的js数组方法,以及js的高级函数, 最后实现一个小案例,图书商店.

小案例,图书商店

在这里插入图片描述

需要这个代码的在下面留言.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值