1.vue里watch和计算属性component的区别:

  答:component是一个数据受多个数据的影响,watch是一个数据影响多个数据.component默认会去读取缓存里的内容,watch是当监听到数据的变化的时候,才会去执行相应的函数.

2.vue里v-if和v-show的区别:

  答:v-if控制的元素显示与隐藏,是会改变dom树里的元素的,如果v-if让某个元素隐藏了,在dom树里是没有这个元素的;

    v-show控制元素的显示与隐藏,相当于控制css的display为none,隐藏的元素仍然存在在dom树中,只是不展示.

       所以,如果某个元素会经常的切换隐藏或展示,就用v-show来控制,如果这个元素的展示与隐藏基本不会改变的,就用v-if来控制.

       v-if有更高的切换消耗,而v-show有更高的初始渲染消耗.

3.谈一下你对vue生命周期的理解,并且说说在这些生命周期钩子函数中应该做什么

  答:beforeCreate~创建前,这个时候vue实例还没有,可以在这里做写上loadding...等增加用户体验的操作;

      created~创建,这个时候可以获取到vue实例里的data数据,还有一个方法,可以在这里做数据的初始化,还可以发一些请求.注意这个时候dom树还没有构建不可以做操作dom的相关操作;

      beforeMount~挂载前

      mounted~挂载,这个时候dom树已经构建好了,可以在这里做一些跟dom有关的操作;

   beforeUpdate~更新前,这个时候dom还没有重新被渲染,在这里还可以做一些改变数据才操作;

     updated~更新,这个时候虚拟dom已经重新渲染并应用更新了,在这里最好不要再去改变数据,避免造成dom的重新渲染;

     beforeDestroy~销毁前,组件即将销毁,可以在这里解除绑定,销毁子组件以及事件监听器等;

     destroyed~销毁完毕

4.vue-router路由传参query和param的区别:

  答:1.用query传参的,接收的时候也用query来接,param也一样.

       2. query是用path来引入路由,param是用name来引入路由.

    3.query相当于get请求,页面跳转的时候,可以在地址栏看到参数,pqram相当于post请求,参数不在地址栏中显示.

    附:query和param传参的代码:

    this.$router.push({
       path:"/地址",
       path:{
         key:'value'
       }
    });

    接收:this.$route.path.key

    this.$router.push({
       path:"/地址",
       params:{
         key:'value'
       }
    });

    接收:this.$route.params.key

5.说说v-for中key的作用

  答:使用v-for更新已渲染的元素列表时,默认用就地复用策略;列表数据修改的时候,他会根据key值去判断某个值是否修改,如果修改,则重新渲染这一项,否则复用之前的元素。而key的作用可以高效的更新虚拟DOM,提高渲染性能。

6.vue中自定义组件为什么要加.native

  答:在自定义组件或者组件库中的组件上加事件时,无法生效。因为在自定义组件上注册事件触发的是组件自定义的事件

    而.native - 监听组件根元素的原生事件。 

         通俗点讲:就是在父组件中给子组件绑定一个原生的事件,就将子组件变成了普通的HTML标签,不加'. native'事件是无法触 发的。