1.webpack里边装备主动注册组件
第一个参数是匹配途径,第二个是深度匹配,第三个是匹配规则 const requireComponent = require.context('./libary', true, /.vue$/) export default { install (Vue) { requireComponent.keys().forEach((item) => { **根据组件的name注册全局组件** Vue.component( requireComponent(item).default.name, requireComponent(item).default ) }) } }
2.自界说指令图片懒加载webpack是什么
导入默许图片 import defaultImg from '@/assets/images/200.png' export default { install (Vue) { // // 注册自界说指令 v2办法 Vue.directive('lazy', { // inserted () { // console.log(11111) // } //注册自界说指令 v3办法 mounted (el, binding) { // 浏览器提供 IntersectionObserver const observer = new IntersectionObserver( ([{ isIntersecting }]) => { // console.log(isIntersecting, '====IntersectionObserver') if (isIntersecting) { console.log(el, binding, 11111) // 图片加载失败就显示默许图片 el.onerror = function () { el.src = defaultImg } el.src = binding.value // 不在监听dom observer.unobserve(el) } }, { threshold: 0.01 } ) // 监听dom observer.observe(el) } }) } }
3字符间距.图片文件转base64格局(完成预览)
根据 FileReader 把文件读取为 base64 的字符串:
fileChange (e) { // console.log(e.target.files) if (e.target.files.length === 0) { // 没有挑选图片 this.avatar = '' } else { // 创立 fr 目标---FileReader结构函数 const fr = new FileReader() // 读取文件 fr.readAsDataURL(e.target.files[0]) // 监听加载事情,读取成功后执行里边的回调 fr.onload = () => { // 将结果赋给xxx this.avatar = fr.result } } },
给input设置change改动事情
- 1设置一个变量接收转化的数据
- 2拿到事情方针,递归的时间复杂度里边有个办法后端需要学什么e.target.files是个伪数组.经过e.target.files.length判别用户是否挑变量与函数选了图片
- 3经过new FileReader拿到一个实例
- 4经过 实例名.readAsDataURL 将图片转成base64格局
- 5onload可以监听转化完成后/给声明变量赋值
4.数组转为tree型结构(递归完成)
当后端传后端开发来的数据是扁平化的时分,前端可用代码处理后端工程师数据得到树形结构webpack配置
列表型数据的要害特点: id 和 pid, id指的是自己的部门id, pid指的是父级部门的id (空则没有父级部门) 孩子的pid与父亲的id共同

// 注 : list 传来的数组 , value 挑选的条件 function arrToTree(list, value) { // 1.界说一个空数组,后续往里边增加树形结构 const arr = [] list.forEach(item => { // 2. 挑选满足要求的item if (item.pid === value) { // 3.挑选一切孩子,即pid与父级id共同的(外循环走一次,里边走完一切) const children = arrToTree(list, item.id) // 4.父级中有孩子,才干加上children特点 if (children.length > 0) { // 5. 因为需求的树形结构中孩子特点名为children,手动给父级增加一个children特点,并赋值 item.children = children } // 6. 把满足要求的一组数据push进去 arr.push(item) } }) // 回来树形结构 return arr }
// 第一次调用函数,找出pid为”的每一项(即父级),后面调用,找孩子
调用: arrToTree(list, ”)
5.递归深复制
let obj = { name:'张三', age:20, hobby:['学习','上课','干饭'], student:{ name:'尼古拉斯赵四', age:38 } } //深复制函数 function copy(obj,newObj){ for(let key in obj ){ if( obj[key] instanceof Array ){ newObj[key] = [] //递归调用 持续深复制数组 copy(obj[key],newObj[key]) }else if( obj[key] instanceof Object ){ newObj[key] = {} //递归调用 持续深复制目标 copy(obj[key],newObj[key]) }else{ newObj[key] = obj[key] } } } //开端复制 let newObj = {} copy(obj,newObj)
6.将数组里边的目标转化成咱们需求的键值对
咱们拿到的数据:arr=[{入职日期:43535,名字:’jack’,手机号:111111….},{}]
需求的上传格局: [{timeOfEntry:43535,username:’jack’,mobile:111111….},{}]
//手动写一个具有对应联系的目标 const userRelations = { '入职日期': 'timeOfEntry', '手机号': 'mobile', '名字': 'username', '转正日期': 'correctionTime', '工号': 'workNumber' } //第一个参数是自己写的对应联系目标,第二个参数是原数组 function demandArr(userRelations,arr){ //创立一个空数组 const newArr = [] arr.forEach(item => { //创立一个空目标 const obj = {} //循环数组里的每一个目标 for (const k in item) { const englishKey = userRelations[k] obj[englishKey] = item[k] } newArr.push(obj) }) } // console.log(newArr)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)