欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vue常见深入面试题

程序员文章站 2022-04-19 15:44:26
...

小编在这里总结一些vue常见的面试题,希望能够帮助到你们的面试

你对vue中mvvm的模式设计有什么感想?

mvvm设计模式采用的双向绑定,当view发生变化,model会跟着变化,model发生变化,view也会同步,这样的话,我们就可以更多的关注逻辑,从而减少dom的操作,代码的耦合性也更好

vue中利用索引修改数组的时候,页面会跟着同步吗?

利用索引修改数组的时候,页面不会进行同步,此时应该利用vue.set的方法进行设置数据

vue首屏加载过慢如何解决?
  • 路由懒加载,会将原来打包一个app.js的文件打包成多个文件

  • 异步组件,按需加载

    newVue({
      components: {
            'my-component':()=>import('./my-async-component')
      }
    })
    
  • 组件异步加载

  • webpack开启gzip压缩

  • 如果图片过多,开启图片懒加载

  • 使用cdn资源

  • 如果首页是登录页,做多入口

vue中v-if和v-show有什么区别?

v-if和v-show都会让元素显示和隐藏,但是v-if是通过移除和添加dom元素,v-show是通过display:none来实现隐藏

vue中的父子组件传值和兄弟组件传值都是如何实现的?

父向子传值,主要通过子组件的props,获取父组件绑定的数据

子向父传值,主要通过子组件利用$emit触发父组件上的事件

兄弟组件传值利用eventbus的方式,主要利用创建一个空的vm实例,作为中间者

你之前有做过spa类型的项目吗?怎么实现的?

spa就是单页面应用程序,而单页面应用程序,主要依靠路由来实现,路由根据不同的hash值来展示不同的组件

路由中如何去除url上的‘#’#

路由有两种模式,一种为hash模式,另一种为history模式,开启history模式后自动去除#,开启history模式需要后台配合

new VueRouter({
  mode:'history',
  route:[]
})
vue中的单项数据流和双向数据绑定是什意思?

单项数据流是指数据是单向的,父组件的数据传递给子组件,只能单项绑定,不可以在子组件修改父组件的数据

双向数据绑定:是指数据和页面进行双向绑定,相互影响

vue中双向数据绑定的原理是什么?

vue双向数据绑定的原理主要通过数据劫持Object.defineProperty和发布订阅模式实现的,通过Object.defineProperty监听数据发生变化然后通知订阅者(watcher),订阅者触发响应的回调

为什么在使用v-for的时候需要添加key属性

因为vue在更新渲染dom的时候是根据新旧dom数进行对比的,使用key来给每个节点做一个唯一标识,Diff算法就可以正确的识别此节点,找到正确的位置区插入新的节点。

为什么vue组件中的data必须是函数

因为如果默认为data是对象的话,对象为引用类型,这样的话,所有复用的组件都是引用的同一个数据,但是如果是函数的话,每次函数都会先创建一个新的数据,从而使每个组件的数据独立

你对vue生命周期的理解怎么样?

vue的生命周期就是vue实例的创建运行销毁的一个过程,在不同的阶段会触发不同的函数,这些函数也就是生命周期函数,比如create,在实例创建数据已经完毕,能够做一些数据的初始化,但是dom还没有渲染,mounted页面数据全部渲染完毕,可以在此函数内部操作dom

你知道webpack中babel、plugin、loader都有什么作用吗?

babel用来出来es6转es5,plugin配置webpack的一些插件,loader用来配置解析处理第三方文件的

keep-alive的作用

包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染。

你知道路由钩子吗?

路由钩子分为全局钩子、路由独享钩子、组件内钩子,全局钩子用来拦截所有的路由的,进行处理,路由独享钩子,本质上和后面的组件内钩子是一样的。都是特指的某个路由。不同的是,这里的一般定义在router当中,而不是在组件内。组件内钩子,是将钩子函数定义在组件内部了

项目中如果涉及多个组件数据共享你如何解决?

可以启用vuex

vuex中的五个属性都是什么? 有什么作用?
  • State 存储数据
  • Getter 可以认为是 store 的计算属性,它的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。
  • Mutation 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation
  • Action 包含任意异步操作,通过提交 mutation 间接更变状态
  • Module 将 store 分割成模块,每个模块都具有state、mutation、action、getter、甚至是嵌套子模块
相关标签: vue 面试题