VUE面试题总结

1.vue是什么?


    vue是一套用于构造用户界面的渐进式JavaScript框架,简化dom操作。
    vue是一套前端框架,免除了原生javascript中的dom操作,简化书写
    vue基于mvvm思想,实现双向数据绑定


2.什么是MVVM?


    MVVM是一种软件设计模式。
    M(model):模型层。就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model
    V(view):视图层。就是展现出来的用户界面
    VM(viewModel):视图模型层。它是中间层,是连接view和model的桥梁,它将模型中的数据转换成视图可以使用的形式,并处理用户与视图的交互。


3.mvvm和mvc的最大区别是什么?


    mvvm实现了view和model的自动同步,也就是使用mvvm我们不用再手动操作dom来改变view的显示

4.怎样快速创建一个vue页面?


    1)新建html页面,引入vue.js文件 (引入CDN上的地址)
        <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    2)在js代码区域,创建vue核心对象,进行数据绑定
        const vm = new Vue({
            el: 'app',
            data() {
                return{
                    username: 'zs'
                }
            }
         })
    3)编写视图层
    <div id='app'>
        { {zs}}
    </div>


5.v-if 和 v-show 区别?
    

    都能控制页面原始的显示和隐藏
    v-if 是通过控制dom节点的渲染实现的
    v-show 是通过 display 属性控制的


6.什么是自定义指令?


    1)vue官方提供了常用的指令,如 v-model、v-for、v-if等
    2)还允许开发者自定义指令
    3)是一种扩展vue语法的方式,可以在模版中添加自定义的功能
    4)可以在vue实例上注册,并在模版中使用
    5)包含局部指令和全局指令,局部指令在组件中就可以注册使用,而全局则是将指令注册到全局,通常在main.js中注册
        <template>
          <div v-highlight>这是一个带有黄色背景的文本</div>
        </template>

        <script>
        // 定义局部指令
        Vue.directive('highlight', {
          bind(el, binding, vnode) {
            el.style.backgroundColor = 'yellow';
          }
        });
        </script>


7.你用自定义指令做过哪些功能?


    1)用户头像处理,通过绑定自定义事件渲染当前用户的头像,在指令中获取当前用户头像图片的src,如果没有头像图片则显示提前设置好的默认图片
    2)权限控制,通过绑定自定义事件传入控制当前元素的权限字段,在指令中获取到当前元素并根据权限字段来控制该元素的状态(显示、隐藏等)

8.说说v-for和v-if的 优先级


    1)v-if用于条件性渲染,v-for是基于一个数组来渲染一个列表
    2)vue2中,v-for的优先级更高,就是说如果写在一起,每次渲染都会先循环再进行判断,会带来性能方面的浪费,
      为了避免性能浪费,不能放在同一个标签中,在外部加一个<template>标签先写v-if判断,再内部进行v-for循环
    3)vue3中,v-if的优先级更高,写在一起会报错,因为v-if判断时还没拿到这个数组,这时v-if需要写在循环的内部

9.vue插槽是什么?


    1)可以理解成子组件为父组件预留的位置
    2)当使用一个子组件时,组件标签里面的对应内容就会替换掉子组件中的slot标签

10.插槽分类?


    1)默认插槽:子组件中用slot标签确认渲染位置,父组件直接在子组件标签内写入内容即可
    2)具名插槽:有名字的插槽,在子组件中用 name 属性对插槽进行命名,父组件通过配置 template 中的 v-slot:name 或者 #name 来对应上子组件中要写入内容的位置
        //子组件
        <template>
          <slot name=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值