vue面试题1

目录

 

一.插值表达式{{}}

二.计算属性computed,get和set.

三.watch监听器

四.绑定class和style

五.v-if和v-show的区别

六.v-for列表循环

七.父子组件通信

八.组件基本的生命周期

九.父子组件的生命周期

十.slot插槽

十一.动态组件

十二.异步组件

十三.keep-alive实现组件的缓存

十四.v-if和v-for哪个优先级更高?如果两个同时出现,应该怎么优化得到更好的性能?

十五、vue组件data为什么必须是一个函数,而vue的根实例则没有此限制?

十六.vue中key的作用和工作原理?

十七.vue组件化的理解

十八、VUE性能优化方法:

1.路由懒加载

2.keep-alive缓存页面

3.使用v-show复用DOM

4.v-for避免同时使用v-if,使用计算属性

5.事件销毁

6.图片懒加载

7.第三方插件按需引入


一.插值表达式{{}}

二.计算属性computed,get和set.

三.watch监听器

//监听基本类型

export default{
data(){
return{
name:'ztt',
info:{
hobby:'zyf',
}

}
watch: {
name(newValue,oldValue){
console.log('name',newValue,oldValue)
}
info:{
handler:function(newValue,oldValue){

console.log('info',newVaule,oldVaule)
}
//深度监听
deep:true;

}
}
}

四.绑定class和style

动态绑定类名   :class="{'active':isActive}"  或  :class="['active']"        isActive

style     :style="styleData"    styleData:{backgroundColor:"red",color:"white"};

五.v-if和v-show的区别

v-show会把不显示的内容也会显示出来。

如果状态不断变化,使用v-show

六.v-for列表循环

遍历数组:v-for="(item,index) in array”   :key="item.id"

遍历数组:v-for="(value,key,index) in object"   :key="key"

***v-if和v-for不能一起使用,v-for优先级比v-if高;

七.父子组件通信

父组件向子组件传值:props

子组件向父组件传值:$emit

八.组件基本的生命周期

九.父子组件的生命周期

created,before update先父后子,

update,destory,mounted是先子后父;

十.slot插槽

十一.动态组件

<component :is="item.type"></component>
<template>
    <div id="app">
        <div v-for="item in productData" :key="item.id">
        <component :is="item.type"></component>
        </div>
    </div>
</template>
<script>
    import Video from './components/Video';
    import Text from './components/Text';
    export default {
        name: "App",
        data(){
            return{
                productData:[
                    {
                        id:1,
                        type:'Video'
                    },
                    {
                        id:2,
                        type:'Text'
                    }
                ]
            }
        },
        component:{
            Video,
            Text
        }
    }
</script>

<style scoped>

</style>

十二.异步组件

页面首次渲染的时候,不去加载某部分代码,需要的时候再去加载,提升了性能;

compents:{

Test:()=>import('./compents/Test')

//组件加载的时候起名字

Test:()=>import(/*webpackChunkName:"Test"*/,'./compents/Test')

}

十三.keep-alive实现组件的缓存

在组件外面套一层<keep-alive></keep-alive>,组件不会被销毁,会被缓存起来

如果组件比较简单,可以使用v-show,如果比较复杂,使用keep-alive;

十四.v-if和v-for哪个优先级更高?如果两个同时出现,应该怎么优化得到更好的性能?

1.v-for优先于v-if被解析;

2.如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性能;

3.要避免出现这种情况,则在外层嵌套template,在这一层进行v-if判断,然后在内部进行v-for循环;

十五、vue组件data为什么必须是一个函数,而vue的根实例则没有此限制?

vue组件可能存在多个实例,如果使用对象形式定义data,则会导致他们公用一个data对象,那么状态变更将会影响所有组件实例,这是不合理的。采用函数形式定义,在initData时将其作为工厂函数返回全新data对象,有效规避多实例之前状态污染问题。而在vue根实例创建过程中则不存在该限制,也是因为根实例只能有一个,不需要担心这种情况。

十六.vue中key的作用和工作原理?

key的作用主要是为了搞笑的更新模拟dom,其原理是vue在patch过程中通过key可以精准判断两个节点是否是同一个,从而避免频繁更新不同元素,使得证跟patch过程更加高效,减少DOM操作量,提高性能;

十七.vue组件化的理解

思路:组件化定义,优点,使用场景和注意事项等方面展开陈述,同时要强调vue中组件的一些特点。

组件时独立和可复用的代码组织单元。组件系统时vue核心特性之一,他使开发者使用小型、独立和通常可复用的组件构建大型应用;

组件化开发能大幅提高应用开发效率、测试性、复用性等;

组件按使用进行分类有:页面组件、业务组件、通用组件;

vue中常见组件化技术有:属性prop,自定义事件,插槽等,他们朱永用于组件通信、扩展等;

高内聚,低耦合;

十八、VUE性能优化方法:

1.路由懒加载

2.keep-alive缓存页面

3.使用v-show复用DOM

4.v-for避免同时使用v-if,使用计算属性

5.事件销毁

vue组件销毁时,会自动解绑它的全部指令及事件监听器,但是仅限于组件本身的事件;

6.图片懒加载

对于图片过多的页面,为了加速页面加载的速度,所以我们需要将页面内未出现在可视区域内的图片先不做加载,等到滚动到可视区域后再去加载;

7.第三方插件按需引入

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值