| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> vue面试题 -> 正文阅读 |
|
[JavaScript知识库]vue面试题 |
1.MVVM的理解 MVVM分为Model、View、ViewModel三者 Model:代表数据模型,数据和业务逻辑都在model层中定义 View:代表UI视图,负责数据的展示 ViewModel:负责监听model中数据的改变并且控制视图的更新,处理用户交互操作 Model和View并无直接关联,而是通过ViewModel来进行联系的,Model和ViewModel之间有着双向数据绑定的联系。因此当Model中的数据改变时会触发View层的刷新,View中由于用户交互操作而改变的数据也会在Model中同步。这种模式实现了Model和View的数据自动同步,因此开发者只需要专注对数据的维护操作即可,而不需要自己操作dom。 2.v-if和v-show的区别
v-if和v-show都可以显示和隐藏一个元素,但有本质区别
v-if是惰性的,只是值为false就不会加载对应元素,为true才动态加载对应元素
v-show:是无论为true和为false都会加载对应html代码,但为false时用display:none隐藏不在
页面显示,但为true时页面上用display:block显示其效果
适用场景:切换频繁的场合用v-show,切换不频繁的场合用v-if ? 3.vue生命周期 在vue生命周期的不同阶段通过对应的钩子函数来实现组件数据管理和DOM渲染两大重要功能。 4.vue中methods,computed,watch的区别
methods中都是封装好的函数,无论是否有变化只要触发就会执行
computed:是vue独有的特性计算属性,可以对data中的依赖项再重新计算,得到一个新值,应
用到视图中,和methods本质区别是computed是可缓存的,也就是说computed中的依赖项没有变化,则computed中的值就不会重新计算,而methods中的函数是没有缓存的。
?Watch是监听data和计算属性中的新旧变化。 ?5.v-for中为什么要用key 循环遍历的时候为每一个个体加上key属性,且key的属性是唯一值 在循环中每次内容发生改变的时候Vue会根据key的标识去对比变化前后dom及数据的值,如果没有发生过改变就不去重新渲染,提高渲染效率,局部渲染 ?6.说一下你对vuex的理解
vuex是一个状态管理工具,主要解决大中型复杂项目的数据共享问题,主要包括
state,actions,mutations,getters 和 modules 5 个 要 素 , 主 要 流 程 : 组 件 通 过 dispatch 到
actions,actions是异步操作,再actions中通过commit到mutations,mutations再通过逻辑操作改
变state,从而同步到组件,更新其数据状态,而getters相当于组件的计算属性对,组件中获取到的
数据做提前处理的.再说到辅助函数的作用.? 7.router和route的区别? route是信息对象集合,包括path,params,hash,query,fullPath,matched,name等路由信息参数 router是路由器对象包含了路由的跳转方法(push , replace , back ,go),钩子函数等 8.v-router hash 模式和 history 模式的区别 url展示hash带‘#’,history没有。刷新页面,hash可以正常加载hash对应的页面,而history因为没有‘#’所有用户刷新页面之类的操作时,浏览器还是会给服务器发送请求,没有处理的话,会返回 404,一般需要后端将所有页面都配置重定向到首页路由。hash可以支持低版本浏览器和IE 9.vue双向数据绑定的原理 Vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过object.defineproperty来劫持各个属性的getter,settet,在数据变动时发布消息给订阅者,触发相应监听回调。当把一个普通JavaScript对象传给 Vue 实例来作为它的data?选项时,Vue 将遍历它的属性,用object.defineproperty将它们转为getter/setter。用户看不到getter/settet,但是在内部它们让Vue追踪依赖,在属性被访问和修改时通知变化 10.导航守卫 全局守卫:beforeEach,afterEach 局部守卫: beforeRouterEach:因为当守卫执行前,组件实例还没被创建,不能获取组件实例的this beforeRouterUpdate:?在当前路由改变,但是该组件被复用时调用,可以访问组件实例this beforeRouterLeave:导航离开该组件的对应路由时调用,可以访问组件实例this 每个守卫方法接收三个参数: to:目标路由对象 from:准备要离开的路由 next():进行管道中的下一个钩子。可传递参数有布尔值false,直接写路径'/’或{path:‘/’},回调函数 注意:后置钩子函数afterEach不会接售next函数也不会改变导航本身。 11.组件中的data为什么是一个函数 如果data是对象的话,因为对象是引用类型,组件被复用的话,就会创建多个实例。本质上,这些实例用的都是同一个构造函数。这样就会影响到所有的实例,所以为了保证组件不同的实例之间data不冲突,所有data必须是函数。 12.keep-alive的作用 keep-alive可以实现组件缓存,当组件切换时,主要用于保留组件状态或避免重新渲染。有两个属性include、exclude,允许组件有条件的进行缓存。有两个构造函数activated、deactivated,用来得知当前组件是否处于活跃状态。 13.ref的作用 绑定到普通元素上:获取dom元素this.$refs.box 绑定到子组件:
14.nextTick? 可以让我们在下次 DOM 更新循环结束之后执行延迟回调,用于获得更新后的 DOM.nextTick主要使用了宏任务和微任务。根据执行环境分别尝试采用Promise、MutationObserver、setImmediate,如果以上都不行则采用setTimeout。定义了一个异步方法,多次调用nextTick会将方法存入队列中,通过这个异步方法清空当前队列 15.Vue 的响应式原理中 Object.defineProperty 有什么缺陷 无法监控到数组下标的变化,导致通过数组下标添加元素,不能实时响应。只能劫持对象的属性,从而需要对每个对象,每个属性进行遍历,如果,属性值是对象,还需要深度遍历。proxy可以劫持整个对象,并返回一个新的对象。不仅可以代理对象,还可以代理数组。还可以代理动态增加的属性 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 4:35:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |