数组去重实用方法 array是要比较的数组,iteratee是一个可选的函数,用于确定元素的唯一性。如果不提供该函数,将使用默认的。这个方法的缺点是数组中不能有复杂数据类型,因为set里做的是严格等,地址不同也会判不等。3.手写,效率肯定不如lodash优化过的,面试可用。1.lodash库的uniqBy方法。函数,即直接比较元素的值。
ES6引入块级作用域解决了什么问题? 循环中的变量共享问题:在使用var声明的变量作为循环变量时,循环体内新的作用域会覆盖外部作用域的同名变量,导致不符合预期的结果。使用let声明的变量则会在每次循环时创建一个新的作用域,保证每次循环中变量的独立性。变量声明提升:在传统的作用域中,使用var声明的变量会存在变量提升,即在作用域内任何位置都可以访问到该变量。而块级作用域中使用let声明的变量则不存在变量提升,只在块级作用域内有效。闭包问题:在传统作用域中,使用var声明的变量会存在变量提升和函数作用域的特性,可能导致闭包中变量值的共享和泄露。
vue2的<keep-alive>组件源码分析 如果我们的name 不在include或者在exclude当中,代表不缓存,直接返回拿到的虚拟dom vnode。再从最右侧去push进去这个keys数组,保证最近使用的缓存的vnode的key永远处于数组的右侧。准备两个容器,一个对象,一个数组,对象当中后期存的就是我们缓存的组件对象,数组当中存的是缓存的组件对象的key。3、先拿到created当中创建两个容器,接下来拿vnode的key,如果有就直接拿,没有去添加。如果有,那么就构建要缓存的组件vnode,进行真正的缓存。
vue数据代理和劫持 因为数据劫持是在beforeCreate和created之间做的,一旦结束就不会再触发,所以后面再添加或删除的数据就不再是响应式的了,vue提供了this.$set和this.$delete去解决这个问题,用这两个方法添加和删除的数据还是响应式。当读取vm身上的数据时,会通过get方法返回data中的同名属性,此时又会调用data的同名属性的get方法,最后返回同名属性值。vue希望数据是响应式的,页面和数据本身有联系。只能监听到读取和修改,不能监听添加和删除。
包装对象和对象转基本值 不是判等,要把数组转成基本数据类型,[1,2,3].valueOf拿不到原始值,返回的还是[1,2,3],[1,2,3].toString的结果是"1,2,3","1,2,3"+100就变成了字符串拼接,最后的结果是" 1,2,3100 "valueOf返回自身的非包装对象,再去调用toString,不同的对象有自己的toString,所以返回的结果也不同。那就调用对象的valueOf方法,valueOf方法的本意是去拿包装对象的原始值,如果不是包装对象,那就会返回自身。是不是懵啦 来看看叭。
Vite创建项目之后配置@为src目录 有三个选择:写项目文件名,选项目框架,ts+vue3或者js+vue2或者自定义,自定义会直接安装eslint和pretirrer,其他的没有需要自己装。到这里@已经可以代表src目录的绝对路径了,但写的时候没提示,所以还需要在tsconfig.json里配置一下。到这里 就可以在文件中愉快的使用 import " @/xxx/xxx "vite创建项目是 npm create vite。在compilerOptions中配置。这里选了ts+vue3。
vue2和vue3在路由上的一些写法区别 vue3对应的vue-router4版本中,删除了上面的matcher属性,所以要手动删除。// 将匹配所有内容并将其放在 `$route.params.pathMatch` 下。一定要放在路由最后面,不然会被任意路由匹配到,后面的路由就不起作用了。这样做的目的是将原始的路由实例重置为新的路由实例,以达到重置路由的目的。( [ xxx ] ) 这个方法可以直接把数组中的路由对象全部动态添加到路由中。路由数组.forEach(item=>router.属性赋值为新的路由实例的。
权限控制(RBAC) 上面这段代码中给函数传参的时候用了lodash的cloneDeep方法,因为如果不这样做的话,函数在对子路由进行校验的时候会直接修改源数据,这样allAsyncRoutes异步路由就直接被修改了,切换用户的时候菜单显示会出现问题。4.所以现在的目的就是:拿到动态路由在用户信息的路由权限数组中筛选,留下有权限的, 把最后筛选完成的路由对象动态添加到路由中。RBAC:基于角色的权限控制,用户+角色+权限,给角色分配权限,给用户分配角色。都可以,主要看用户的动态路由在哪生成。
快速清除组件数据 有时候在不刷新页面的情况下 , 同一个组件再次出现时还会保留上一次填写的数值 , 需要在功能最后手动清除。总之,这段代码是用于重置组件数据的方法,将当前数据对象恢复为初始状态。这段代码是一个JavaScript方法,名为。对象重置为组件实例的初始数据。
Eslint 和 prettier 自身的规范倾向于个人 / 团队的代码风格的规范或统一,例如单引号还是双引号,每行最大长度,等号左右空格,使用 tab 还是 空格等等,将。// 执行 eslint 检测的时间,onType 输入时。// // 一行的字符数,如果超过会进行换行,默认为80。// // 尾随逗号问题,设置为none 不显示 逗号。// // 默认使用prittier作为格式化工具。//指定 eslint 所处理的文件的后缀。VsCode 插件安装两个插件。一起协同工作犹如如虎添翼。// // 不要有分号。