
获得徽章 0
- 问题:数组中实用的高阶函数有哪些?
答:高阶函数,就是函数中可以传入另一个函数作为参数的函数。
1.forEach:forEach是对数组每个数据进行遍历,与for的差别是,for可以将遍历的数组的每一项修改,而forEach并不会改变原数组(如果是数组对象值的修改,forEach也修改到对象的值)
2.filter:filter筛选出满足条件的数组,满足条件 === 返回写的条件为true的每一项组成一个新的数组,并不会改变原数组简单的使用 - 筛选出数组中number大于8的数字
3.map:map遍历,返回处理过的数组的每一项组成一个新的数组(需要数组的每一项的时候一般都会用到map),通常应用于对数组的对象进行重新组合,或者需要向数组添加新数据,比如在react中使用map进行遍历
4.sort:sort是将数组进行排序,主要是根据传入的函数进行排序,最简单的就是数字排序
5.some:some方法会检测,返回布尔值,不改变原数组。在执行中,有一个满足就返回true,不再继续执行
6.every:与some不同,它会去检测数组中的每一项是否满足条件,所有都满足才会返回true
7.reduce:会对数组中的元素进行回调函数中的方法,经常都用于累加
8.find:找出数组中满足条件项,找到一项直接返回满足条件的项,不在继续进行往下寻找展开评论点赞 - 问题:宏任务和微任务是什么?
答:试想一下,如果js的任务都是同步的,那么遇到定时器、网络请求等这类型需要延时执行的任务会发生什么?
页面可能会瘫痪,需要暂停下来等待这些需要很长时间才能执行完毕的代码
所以,又引入了异步任务。
● 同步任务:同步任务不需要进行等待可立即看到执行结果,比如console
● 异步任务:异步任务需要等待一定的时候才能看到结果,比如setTimeout、网络请求
异步任务,又可以细分为宏任务和微任务
● 先执行同步代码
● 遇到宏任务,放入队列
● 遇到微任务,放入微任务队列
● 执行栈为空
○ 将微任务入栈执行
● 所有的微任务完成之后,取出宏任务队列来执行
宏任务和微任务相比,宏任务先执行展开赞过评论3 - 问题:对路由的守卫的认识及其分类?
答:路由守卫分为三种:全局导航守卫,路由守卫,组件内导航守卫。路由跳转本身是一个比较复杂的过程,但是可以通过导航守卫把这个过程进行细化,可以在每个细化的过程(钩子函数)中进行相应的操作。
路由导航守卫:导航守卫就是在路由跳转前后的一些钩子函数
路由拦截:在路由跳转到指定的路有前,可以手动让其跳转到其他的路由界面,并且也可以让跳转停止掉。
1.全局守卫:
全局前置守卫:beforeEach 会多次触发,
全局解析守卫:beforeResolve 解析守卫
全局后置守卫:afterEach 把组件实例对象传入到组件beforeRouteEnter守卫的next回调中
2.路由守卫:
beforeEnter 路由内的独享守卫
3.组件内的守卫:
beforeRouteEnter 进入组件之前触发,只在进入组件时触发一次
beforeRouterUpdate 组件更新之前触发(动态参数变化查询字符串变化)进入组件后参数变化可多次触发
beforeRouterLeave 离开路由组件之前触发 只在离开组件时触发一次展开评论点赞 - 问题:vue如何实现性能优化?
答:1.代码模块化,常用的地方封装成单独的组件,在需要用到的地方引用,而不是写过多重复的代码,每一个组件都要明确含义,复用性越高越好,可配置型越强越好,包括咱们的css也可以通过less和sass的自定义css变量来减少重复代码。
2.Vue路由设置成懒加载,当首屏渲染的时候,能够加快渲染速度。
3.打包优化,修改vue.config.js中的配置项,把productionSourceMap设置为false,不然最终打包过后会生成一些map文件,如果不关掉,生成环境是可以通过map去查看源码的,并且可以开启gzip压缩,使打包过后体积变小。
4.减少图片使用,可以用一些css3的效果来代替图片效果,或者使用雪碧图来减少图片的体积。
5.按需引入,咱们使用的一些第三方库可以通过按需引入的方式加载。避免引入不需要使用的部分,无端增加项目体积
6.使用cdn的方式外部加载一些资源,比如vue-router、axios等Vue的周边插件,在webpack.config.js里面,externals里面设置一些不必要打包的外部引用模块展开赞过12