码农之家

Vue常见面试题含泪整理

v-show和v-if的区别

为何在v-for中用key

描述Vue组件生命周期(父子组件)

Vue组件如何通讯(常见)

描述组件渲染和更新过程

双向数据绑定v-model的实现原理

对MVVM的理解

computed有何特点

为何组件data必须是一个函数

ajax请求应该放在哪个生命周期

如何将组件所有props传递给子组件

如何自己实现v-model

<template>
    <input type="text"
        :value="text1"
        @input="$emit('change1', $event.target.value)"
    >
    <!--
        1. 上面的 input 使用了 :value 而不是 v-model
        2. 上面的 change1 和 model.event1 要对应起来
        3. text1 属性对应起来
    -->
</template>

<script>
export default {
    model: {
        prop: 'text1', // 对应 props text1
        event: 'change1'
    },
    props: {
        text1: String,
        default() {
            return ''
        }
    }
}
</script>

多个组件有相同的逻辑,如何抽离

何时要使用异步组件

何时需要使用keep-alive

何时需要使用beforeDestory

什么是作用域插槽

Index.vue

<ScopedSlotDemo :url="website.url">
  <template v-slot="slotProps">
  	{{slotProps.slotData.title}}
  </template>
</ScopedSlotDemo>

ScopedSlotDemo.vue

<template>
    <a :href="url">
        <slot :slotData="website">
            {{website.subTitle}} <!-- 默认值显示 subTitle ,即父组件不传内容时 -->
        </slot>
    </a>
</template>

<script>
export default {
    props: ['url'],
    data() {
        return {
            website: {
                url: 'http://wangEditor.com/',
                title: 'wangEditor',
                subTitle: '轻量级富文本编辑器'
            }
        }
    }
}
</script>

Vuex中action和mutation有何区别

Vue-router常用的路由模式

如何配置Vue-router异步加载

export default new VueRouter({
  routes:[
    {
      path:"/"
      component:()=>import(
    		/* webpackChunkName:"navigator" */
    		"./../components/Navigator"
    	)
    }
  ]
})

请用vnode描述一个DOM结构

<div id="div1" class="container">
  <p>vdom</p>
  <ul style="font-size:20px">
    <li>a</li>
  </ul>
</div>
{
    tag:"div",
    props:{
        className:"container",
        id:"div1"
    },
    context:"",
    children:[
        {
            tag:"p",
            context:"vdom",
            children:[]
        },
        {
            tag:"ul",
            props:{
                style:"font-size:20px"
            },
            context:"",
            children:[
                {
                    tag:"li",
                    context:"a",
                    children:[]
                }
                //...
            ]
        }
    ]
}

监听data变化的核心API是什么

Vue如何监听数组变化

请描述响应式原理

diff算法的时间复杂度

简述diff算法过程

Vue为何是异步渲染,$nextTick何用

Vue常见性能优化方式