vue知识点

1. VUE特点

  • 轻量
    使用gzip最小压缩后有20kb,react有35kb,angular有60kb

  • 渐进式框架
    你不需要完全了解他,就可以用,各取所需,只是个轻量视图而已

  • 响应式的更新机制
    数据改变后,视图会自动更新,而不像react那样用shouldComponentUpdate进行性能优化

  • 学习成本低
    模板语法是基于html,容易上手

2. 生命周期

Vue 实例生命周期(来源官网)

Vue的所有生命周期函数都是自动绑定到this的上下文上,所以不需要用到箭头函数。
页面加载大致过程:

  • beforeCreate:无法获取到propdata
  • created: 经过数据初始化,此时可以获取prop和data,但是组件尚未挂载;
  • beforeMount: 开始创建虚拟dom,如果组件中有子组件,先递归挂载子组件,再挂载根组件的
  • mounted: 将虚拟dom渲染为真实dom。
  • 数据更新
    更新前:beforeUpdates
    更新后: updated
  • 页面销毁
    销毁前:beforeDestory
    销毁后: destoryed

4. Vue 的父组件和子组件生命周期钩子函数执行顺序

(1)加载渲染过程
beforeCreated(父) ->>created(父)->> beforeMounted(父) ->>
子组件渲染:beforeCreated(子) ->> created(子)->> beforeMounted(子) ->> mounted(子)
--> mounted(父)
(2)子组件更新
beforeUpdate(父) --> beforeUpdate(子) -> updated( 子) -> updated(父)
(3)父组件更新
beforeUpdate(父) --> updated(父)
(4)销毁
beforeDestroy(父) -> beforeDestroy (子)-> destroyed(子) -> destroyed(父)

3. vue基本指令

  • v-show
    当条件为true时候display: block,否则是display: none;无论什么条件都会被渲染出来,渲染之后只是css属性的切换,渲染时候有一定的开销,适合频繁切换的场景。

  • v-if
    根据条件来渲染,如果是false,那一开始就不会渲染,但是切换条件时会触发销毁和挂载,所以在切换时候开销比较大,不适合频繁切换的场景

  • v-for

  • {{index}} {{ item.message }}
    • v-model

    v-model其实是一个语法糖

    v-model 会忽略所有表单元素的 valuecheckedselected attribute 的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。

    
    //等价于
    
    

    就是一种双向绑定的过程,视图影响数据,数据影响视图,说明视图是可交互的,一般和表单有关系

    • v-on简写@ 绑定事件
    • v-bind:简写: 绑定属性
    • v-text显示文本
    • v-pre不编译双花括号,直接显示字符串
    • v-html可以显示html字符串

    4. 组件的三大核心概念

    (1)属性

    ​ ① 自定义属性props,表示组件props中声明的属性
    ​ ②原生属性,比如,默认在组件中的根元素上就会有title="测试"的属性;
    ​ 在Test组件中设置inheritAttrs: false就可以关闭自动挂载
    ​ ③特殊属性,style, class挂载到组件根元素上

    (2)事件

    ①普通事件

    - @click
    - @change
    - @input
    - @xxx
    

    子组件通过this.$emit("xxx", 参数1, 参数2, 参数...)

    ②修饰符事件

    • @input.trim (去掉两端空格)

    • @click.stop(阻止冒泡事件或者在事件中使用e.stopPropagation)

    • @submit.prevent(去除默认事件)

      一般用于原生html的行为

    (3)插槽

    ​ ① 普通插槽

    //老语法