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)