Vue基础知识

80 阅读2分钟

常见的vue指令

  • v-if : 如果为true, 当前标签才会输出到页面
  • v-else: 如果为false, 当前标签才会输出到页面
  • v-show : 通过控制display样式来控制显示/隐藏
  • v-for : 遍历数组/对象
  • v-on : 绑定事件监听, 一般简写为@
  • v-bind : 强制绑定解析表达式, 可以省略v-bind
  • v-model : 双向数据绑定
  • ref : 为某个元素注册一个唯一标识, vue对象通过$refs属性访问这个元素对象
  • v-cloak : 防止加载太慢页面上出现插值语法的源代码,挂载之前先隐藏 与css配合: <h3 v-cloak>{{name}}</h3> [v-cloak] { display: none }
  • v-text : 更新元素的 textContent
  • v-html : 更新元素的 innerHTML

v-show和v-if

v-show通过display:none控制元素的显示隐藏

v-if通过判断表达式来确定是否渲染该元素

v-show适用于频繁操作dom的显示隐藏情况

v-if适用于不频繁操作dom的情况 但如果是首次渲染时要进行判断 建议用v-if 因为v-show首次一定会渲染

v-for和v-if

v-for和v-if不同时使用 v-for优先级高 先循环再判断 开销较大 可以把v-if放到子标签里

v-model语法糖

<input v-model="content">

<input :value ="content" @input="content=$event.target.value">

www.runoob.com/jsref/dom-o…

  • text 和 textarea 元素使用 value property 和 input 事件;
  • checkbox 和 radio 使用 checked property 和 change 事件;
  • select 字段将 value 作为 prop 并将 change 作为事件。

事件对象和事件修饰符

事件对象

$event是默认传入的 如果调用方法的时候没有传参 methods里第一个参数声明就可以接受到$event 如果要传参又要使用$event 可以传参的时候传$event占位

事件修饰符

  • .prevent 阻止默认事件 如a向href的跳转
  • .stop 阻止事件冒泡
  • .once 只在第一次触发事件的时候触发事件侦听器
  • .capture 使用捕获模式
  • .self 只监听元素自身而不是它的子元素上触发的事件
  • .native 原生事件 比如router-link的click事件 使用方法:@click.prevent="showInfo"

keep-alive

keep-alive包含的组件会被缓存 避免多次初始化

生命周期钩子

  • activated 当 keep-alive 包含的组件激活的时候触发
  • deactivated 当 keep-alive 包含的组件失活的时候触发

mounted -activated -deactivated -activated...

两个属性

  • include包含的组件缓存生效 可以是数组 字符串 正则表达式
  • exclude排除的组件不缓存 优先级大于include)

配合动态组件

// 只缓存组件name为a或者b的组件 
<keep-alive include="a,b"> 
    <component :is="currentComponent" /> 
</keep-alive>

配合vue-router使用

<keep-alive>
    <router-view v-if="$route.meta.keepAlive">
        <!-- 这里是会被缓存的视图组件,比如 Home! -->
    </router-view>
</keep-alive>

<router-view v-if="!$route.meta.keepAlive">
    <!-- 这里是不会被缓存的视图组件,比如 Profile! -->
</router-view>

mixin

抽离组件公共部分到一个mixin.js中 然后再组件文件中导入mixin并在配置中添加mixins:[mixin]即可 可抽离多个mixin mixin.js

export default {
  data() {
    return {
      commonData: '公共的数据'
    }
  },
  methods: {
    commonMethod() {
      console.log('公共的方法')
    }
  },
  mounted() {
    console.log('common mounted')
  }
}
import mixin from './mixin'
import mixin2 from './mixin2'

export default {
  mixins: [ mixin, mixin2 ]
}