Vue.js常问面试题

Vue是什么:是一套用于构建用户界面的渐进式框架

Vue的核心是什么:数据驱动/组件化

什么时候用Vue.nextTick()
1.在Vue生命周期的created()钩子函数进行DOM操作一定要放在Vue。nextTick()的回调函数中,原因是在created()钩子函数进行的时候DOM其实并未进行任何渲染,所以是拿不到DOM。与之对应的就是mounted钩子函数,因为该钩子函数执行时所有的DOM挂载和渲染都已完成,此时操作DOM是不会有问题的
2.在数据变化后要执行某个操作,而这个操作需要使用数据改变而改变的DOM结构的时候,这个操作都应该放进Vue.nextTick()的回调函数中

原因是,Vue是异步执行dom更新的,一旦观察到数据变化,Vue就会开启一个队列,然后把在同一个事件循环(eventloop)当中观察到数据变化的watcher推送进这个队列。如果这个watcher被处罚多次,只会被推送到队列一次。这种缓冲行为可以有效的去掉重复数据造成的不必要的计算和DOm操作。而在下一个时间循环时,Vue会清空队列,并进行必要的DOm更新。

Vuex是什么
答:状态管理工具,俗称数据仓库
Vuex有什么
State:要操作的数据
Getter:从仓库中往外面取东西
Mutation 同步往仓库中操作数据
this.$store.commit(传递参数)
Action异步往仓库操作数据
Modules 理解为仓库中的一个一个小房间(即可分类管理)
Vuex能做什么
答:做数据共享和传递(不同页面之间的数据传递)
单一状态树管理,让数据的修改脉络更加清晰,便于定位问题,模块化

Vue双向数据绑定原理
答:Vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调

Sass有什么优点
答:可以使用变量 简单的逻辑处理 函数等
缺点:文件体积和复杂度不可控,调试难度增加

定义组件的时候data为什么是函数而不是对象
答:因为对象是引用类型,组件可能会被多个实例同时引用。如果data值为对象,将导致多个实例共享一个对象,其中一个组件改变data属性值,其它实例也会受到影响

Vue和jquery的区别是什么?哪些场景适合?
答:一个model+view+viewModel框架,数据模型model,viewModel连接两个
区别:vue数据驱动,通过数据来显示视图层而不是节点操作。
场景:数据操作比较多的场景,更加便捷

active-class是哪个组件的属性?
答:vue-router模块的router-link组件

什么是RESTful API?怎么使用?
答:是一个api的标准,无状态请求。请求的路由地址是固定的,如果是tp5则先路由配置中把资源路由配置好。标准有:.post .put .delete

生命周期常用场景
beforecreate : 可以在这加个loading事件,在加载实例时触发, 记录进入时间
created : 初始化完成时的事件写在这里,如在这结束loading事件,发送网络请求
mounted : 挂载元素,获取到DOM节点
updated : 如果对数据统一处理,在这里写上相应函数
beforeDestroy : 离开页面之前,销毁定时器 记录结束时间(统计用户停留的时间)
nextTick : 更新数据后立即操作dom

导航钩子
全局钩子:router.BeforeEach(to,from,next)
组件内的钩子:beforeRouteEnter(to,from,next) Update Leave
独享路由的钩子:beforeEnter(to,from,next)

组件传值
父子传值:Props
子父传值: e m i t ( ) 兄 弟 传 值 : 通 过 一 个 公 共 的 j s , emit() 兄弟传值:通过一个公共的js, emitjsemit() $on()
父孙传值:provide (函数) inject(对象)

你可能感兴趣的:(Vue.js)