1. vue.js的两个核心是什么
数据驱动(数据改变会驱动页面更新)和组件化
2. Vue中一个元素如何绑定多个事件
使用@click=“handle();handle1()”,分号隔开即可
3. Vue路由有几种实现方式,它们的异同点是什么
hash: 使用变更hash不会刷新页面的特性, 来变更路由, 做到单页面无刷新
history: 使用html5的history方法, 不支持老旧浏览器, 但是如果要部署到服务器的化, 需要在ng上进行相应的正向代理跳转, 否则拷贝的链接会打不开
4. Vue第一次加载页面会出发哪些钩子
beforeMount mounted beforeCreate created
5. v-for中key的理解
加了key之后,每个dom有了自己唯一的标识,这样修改的时候可以精准的找到并修改,从而节省了性能。所以,key的值必须唯一,而且不可以用随机数,用时间,不建议用下标
6. Vue页面加载时v-show设置的隐藏元素出现导致页面闪烁问题,解决方案是什么
v-cloak
7. delete和Vue.delete删除数组的区别
delete只是被删除的元素变成了 empty/undefined 其他的元素的键值还是不变。
Vue.delete 直接删除了数组 改变了数组的键值。
8. 如何优化SPA应用的首屏加载速度慢的问题
静态资源本地缓存 组件重复打包 UI框架按需加载 压缩图片 格式化代码
9. vue-router的导航守卫
全局守卫
- router.beforeEach 全局前置守卫 进入路由之前
- router.beforeResolve 全局解析守卫(2.5.0+) 在beforeRouteEnter调用之后调用
- router.afterEach 全局后置钩子 进入路由之后
路由局部组件守卫
- beforeRouteEnter 进入路由前
- beforeRouteUpdate (2.2) 路由复用同一个组件时
- beforeRouteLeave 离开当前路由时
10. Vue-cli简化了我们哪些工作
简化了一个个去创建项目文件以及基本项目需要的各种依赖包及插件的下载
11. vue组件中的name有什么用
12. vue路由传参需要注意什么?
https://blog.csdn.net/sinat_17775997/article/details/78748825
13. vue中query路由传参与params传参哪个刷新页面会丢失
query刷新不会丢失
params会丢失
解决方式只需要在router-link路由的后面利用?的形式 进行参数的拼接
14. vue路由守卫和生命周期的执行顺序
从组件a到组件b
切换组件b ---> beforeRouteLeave(上一组件)
---> beforeEach ---> beforeEnter ---> beforeRouteEnter ---> beforeResolve ---> afterEach ---> beforeCreate ---> created ---> beforeMount ---> beforeDestroy(上一组件) ---> destroyed(上一组件) ---> mounted
大致执行顺序
15. 为啥vue2中不能检测数组的变化,怎么解决?
因为Object.definedPropoty无法检测数组的方法 使用this.$set
16. Vue3响应式原理为什么换成了Proxy
vue2中Object.definedPropoty通过get和set俩个属性对数据劫持实现响应式
缺点:
- 检测不到对象属性的增加或者删除
- 数组的方法检测不到
- 需要对每一个属性进行遍历监听,如果嵌套对象需要深层监听,造成性能浪费
vue3中的proxy本身就是用于监听对象的,所以对象的所有属性都会被代理,而且可以直接监听到数组的变化
缺点:
- Proxy不兼容IE