关于vue2几个点的理解
1.请求在哪个钩子里写?
所有的钩子函数都是同步任务,同步任务下在mounted阶段才能获取到dom,
把请求直接放在任意的钩子里面都可以拿到数据,并且在请求里面也能获取dom,这是因为请求是异步的,当请求执行的时候,钩子函数已经执行完了,所以必定执行过了mounted了,肯定也就能获取到dom了。
得出结论,任意的钩子函数里面只要有异步代码,就可以在异步代码里获取到dom,例如请求,定时器,和vue提供的 this.$nextTick()
2.为什么不在beforeCreate钩子里发请求?
因为很多时候请求都是写在methods的方法里面,在beforeCreate里面无法调用methods的方法,所以不在beforeCreate里面发请求
3.请求到底放在created还是mounted?
都行,看情况
首先要了解一个东西,当页面有子组件的时候,页面的生命周期和子组件的生命周期是怎样的执行顺序:
父组件: beforeCreate,created,beforeMount
子组件: beforeCreate,created,beforeMount,mounted
父组件: mounted
父组件的mounted是较后才执行的
所以,如果要先渲染子组件的数据,那么请求放在mounted里面,如果先渲染父组件的请求的数据,那么请求放在created里面
如果没有子组件,那么请求放哪个里都行
4.组件进入页面会执行哪些生命周期钩子?
会执行前四个
5.keep-alive是什么?
他是用来缓存组件的,使用方法是直接把组件用它包裹,那么这个组件就会有缓存了,什么是缓存?
就是如果数据一样,那么第二次进入的时候就不会重复请求了,就会直接拿上一次的数据,提高性能
使用它会多两个钩子函数:actived和deactived
第一次进入缓存组件会执行前四个钩子加actived钩子,第二次进入只执行actived钩子,不会执行前四个钩子,所以就不会请求数据
6.vuex持久存储?
vuex本身不会持久存储,刷新页面就会回到初始值,解决方法是把state值存到本地,或者使用插件
7.路由模式的区别?
hash和history
二者明显的区别是路径长得不一样,hash有个井号
还有的区别就是,history模式会默认向后端发一次请求,而hash不会
打包方面,history模式打包后找不到页面,hash模式就可以正常浏览,前提是要在vue.config.js里的publicpath配置打包路径为./
8.data数据写在return里和外的区别?
写在return里面有响应式,外面没有
9.methods和computed区别?
computed有缓存机制
10.watch监听器
普通监听字符串普通类型没问题
但是监听复杂类型例如对象,即使开了deep属性,也拿不到旧的值
11.v-for和v-if的优先级?
vfor的优先级更高,源码的10970行左右写的,两个不能写在同一个标签里,会报错
12.ref是什么?
就是用来获取dom的
同步的生命是期函数中,只有到mounted里面才能获取到dom,前面的钩子里面是拿不到dom的。
13.scoped的原理?
他的作用是让样式只在本组件生效
原理是给class添加了自定义属性,data-xxx这样,让样式独立,就不会影响到其他组件的样式了
14.props和data的优先级谁高?
props methods data computed watch
这样的顺序,源码写的,第4325行左右
?
15.跨域问题?
可以在vue.config.js里面配置代理,但是代理在打包后是不会生效的
还有就是打包要先配置publicpath:"./"
这个配置和代理是同级别的,然后还要把理由模式改为hash,这样打包的才能看到页面不至于白屏
如果项目上线不能是hash模式,不要井号怎么办
可以让后端重定向
16.diff算法?
就是dom数据化,简单说就是把需要多次操作dom变成一次操作
例如往ul添加5个li这样的操作,不用diff算法就是每循环一次都操作一次dom,使用diff算法就是在JS里面把数据变成对象直接处理好,最终直接往ul里丢五个li,前者是操作了五次li,后者只操作了一次
文档下载
转载:感谢您阅览,转载请注明文章出处“来源从小爱孤峰知识网:一个分享知识和生活随笔记录的知识小站”。
链接:关于vue2几个点的理解http://www.gufeng7.com/niaolang/1946.html
联系:如果侵犯了你的权益请来信告知我们删除。邮箱:119882116@qq.com
上一篇: vue全局事件总线
下一篇: 慎用v-html点击链接就可能泄露信息