Bootstrap

Vue基础知识学习

一、安装

  1. CDN引入
  2. 直接下载并引入vue环境
  3. npm引入(常用)

二、 Vue基础知识

1. 原始js的编程范式 —— 命令式编程,即每走一步都要给它一个命令

    Vue的编程范式 —— 声明式编程,即只需要声明即可,具体内部是怎么实现的不用管。

    Vue的好处:数据与界面真正分离;

                         修改元素时,在js中修改完直接界面上就更改了(响应式),而js首先需要修改message的数据,然后将修改后的数据再次替换到div元素

2. 开发模式  MVVM (Model View ModelView)

   

 

3. Vue生命周期

4. 插值操作

  • 大括号
  • v-text、v-html
  • v-once(元素和组件只渲染一次,不会随着数据的改变而改变,大部分情况下不会用到)
  • v-pre (将标签内的数据直接显示出来)
  • v-cloak(在某些情况下,浏览器可能直接显示出来为编辑的值,用该指令,可以在缓冲期间不显示。)

5. v-bind  属性的绑定

作用

动态绑定属性(意思就是,属性不是写死的,而是从data中获取的)

缩写

不能使用mustache语法(即{{}},解析不了…),加上v-bind(:)之后,人家就知道这是动态绑定的,就会对该指令进行解析,动态的给属性绑定变量。

  • 动态绑定class属性

使用

1. 普通使用      :class = "data中的变量"

2. 对象语法      :class = "对象"

    举例说明      :class="{ 类名1: boolean,  类名2: boolean }"                   

  [ ps:若都为true,则就同时两个class。 class不会覆盖,而是合并 ]

  [ ps:若对象太长,则可以写进计算属性或函数中]

3. 数组语法      :class = "数组"

    举例说明      :class = "['isActive',  'isLine']"

  [ps: 相当于同时多个类,所以不常用(我这里加了单引号,所以是个字符串)]

  [ps: 也可以将变量放进数组]

意义(用处)

有时候需要给某个标签添加class属性,有时候不需要,则进行动态绑定。

  • 动态绑定style

使用

 

对象语法

:style='{key(css的属性名) : value(属性值)}'

【错误写法】:style='{ fontSize: 50px}'(这里的“50px”是当作变量的,是要去data中找的,怎么让他变成一个值而不是变量呢?加单引号!)

【正确写法】:style='{ fontSize: '50px'}'  (vue可以用驼峰表示法)

数组语法

     :style='[ 多个style对象 ]'

6. 计算属性

  • 定义:不多说了,懂得都懂
  • 使用
    • computed: { }
    • 本质是属性(data),定义时按照函数的方式定义,取名时按照data的方式取名

               

 

  • 为什么计算属性当作属性来使用而不是当作方法来使用?

其实,本来计算属性就是一个对象,只不过它的“key值”是 'get'函数 和 'set'函数,set函数基本不用(一般情况下,不希望给计算属性赋值),故set方法一般是不写的;写的时候,一般都只有get方法(只读属性),get方法就是return我们想要的数。但是这样写太复杂了,于是就简化了一下。

ps: 并不是说set方法不能用,当我们对对象赋值的时候,就会主动调用到set方法(相当于更新监听函数),就可以在set方法中进行一系列操作(set函数有个参数,值为该对象新改的值)。

  • 计算属性和methods的区别?
  • 计算属性在内部做了缓存。意思就是,如果值没有发生变化,那么就直接调用缓存即可,不用重新计算。
  • 而methods每次调用都会进行计算。
  • 故如果调用多次的话,那么使用计算属性更好。

计算属性总结:本质是函数,但是外表是属性,我们只能看到它的外表,所以把他当作属性来使用。适用于很多data表达式。

7. 事件监听   v-on

  • 缩写: @
  • 基础使用:不聊了
  • v-on 的参数
    • 事件监听时,若方法不需要额外的参数,那么是不用加括号的(但是像其他情况下绑定函数,不管有没有括号,都需要加()小括号)
    • 定义方法时不管有没有参数,方法本身会自带一个参数:事件操作的event,是个event对象。Vue会默认将浏览器产生的event事件对象作为参数传入到方法。

  • v-on 的修饰符(.stop,.prevent等等)

8. 条件判断

    v-if、v-else-if、v-else

  • v-show 也是用来决定一个元素是否渲染的,其与v-if的区别为:
    • 当条件为false时,v-if 的元素不会出现在 dom 中,每次切换时都要重建;而 v-show 只是添加一个样式: display: none
    • 当需要在显示与隐藏之间频繁切换时,使用 v-show 比较合适;

9. 循环遍历 (v-for)

     

v-for遍历数组

没啥可说的,用了无数次了都

v-for遍历对象

v-for也可以遍历对象!!!这个貌似之前不知道!!遍历的格式跟遍历数组的格式一样。举例: 对象名person,遍历的方式就是

item in person、(item, key) in person、(item, key, index) in person

  • 遍历对象时,若只获取一个值,则获取到的是value
  • 获取key和value   格式:(value, key)
  • 获取key、value、index,格式(value, key, index)
  • 官方推荐,在使用v-for时,建议给对应的元素或组件添加一个 :key 属性,key 要保证唯一。
    • 为什么要使用key?

               虚拟dom的diff算法。(https://www.jianshu.com/p/4bd5e745ce95)

10. 数组中哪些方法是响应式的?

  • 什么是响应式?

 当数据修改时,页面相应的进行修改。

  • 哪些数组的方法是响应式的?

说明:题目意思是,v-for显示数组后,对数组进行哪些操作时,页面也有相应的改变。通过测试,有以下方法:

  • push  在数组最后面添加元素(可以一下增加好多元素)
  • unshift() : 在数组最前面添加元素(可以一下添加好多元素)
  • pop()  :删除数组中的最后一个元素
  • shift() : 删除数组中第一个元素
  • splice() : 删除\插入\替换元素(具体使用方式见说明文档)
  • reverse() : 反转数组
  • 等等一些其他改变数组的方式都是响应式的!!
  • BUT,但是!!直接通过索引值修改数组中的元素,是没办法做到响应式的。
  • 但是万一真的要用到上面那个需求(改变某个元素,或者说是在v-for中通过索引值改变数组的元素)怎么办呢?
    • 可以用splice进行替换! array.splice(0,1,'b') //将第0的值替换为b
    • 使用set方法    set(要修改的对象, 索引值, 修改后的值)

                               Vue.set(array, 0, 'b') // 跟上述的数组作用一样

 

 

 

 

 

;