前端开发中的代码优化

在前端开发过程中,我们可以优化一些代码的书写。

1.用箭头函数进行简化。如将

$(".selectAll").click(function(){
    $(".tickImg").attr("src","images/tickFilled.png")
})

优化为

$(".selectAll").click(()=>{
    $(".tickImg").attr("src","images/tickFilled.png")
})

 

2.标签的自定义属性可用data-xx='yy'来实现。可将

$('.name').attr('data-id')

优化为

$('.name').data('id')

即可得yy。

 

3.简化sessionStorage和localStorage的存取。如将

sessionStorage.setItem("name","lyh")
const name = sessionStorage.getItem("name")

优化为

sessionStorage.name = "lyh"
const name = sessionStorage.name

 

4.使用倒引号简化字符串。如将

$(".searchResult").append(
    '<div>\
            <span>'+arr[i].displayName+'</span>\
            <span>'+arr[i].phone+'</span>\
        </div>\
    </div>'
)

优化为

$(".searchResult").append(
    `<div>
            <span>${arr[i].displayName}</span>
            <span>${arr[i].phone}</span>
        </div>
    </div>`
)

 

5.将解构赋值直接作为函数参数。

6.使用Object.assign优化对sessionStorage的赋值。

如将

const goToFillFormPage = (item) => {
  let { pageCode, workCode, workConfCode, workType } = item;
  sessionStorage.pageCode = pageCode;
  sessionStorage.workCode = workCode;
  sessionStorage.workConfCode = workConfCode;
  sessionStorage.workType = workType;
  router.push(`/generatedForm`);
};

优化为

const goToFillFormPage = ({ pageCode, workCode, workConfCode, workType }) => {
  Object.assign(sessionStorage, { pageCode, workCode, workConfCode, workType });
  router.push(`/generatedForm?pageCode=${pageCode}`);
};

 

7.可以将三元表达式简化为逻辑或运算符,使代码更加简洁和易读。

如将

const extendInfoItem = sessionStorage.extendInfoItem
  ? JSON.parse(sessionStorage.extendInfoItem)
  : {};

优化为

const extendInfoItem = JSON.parse(sessionStorage.extendInfoItem || '{}');

如果sessionStorage.extendInfoItem为假值(如null或undefined),则会返回一个空对象{}。

 

8.使用async/await来处理异步操作,再加上try-catch,使代码更加简洁易读。

如将

const init = () => {
  ActivitiApi.getFormDetail(sessionStorage.pageCode)
    .then(({ data }) => {
      if (data.code === 200) {
        const { column } = JSON.parse(data.data.columnInfo);
        res.value = data.data;
        res.value.columnList = column;
        formOrderData();
      } else {
        Toast.fail(data.message);
      }
    })
    .catch((err) => {
      console.error(err);
    });
};

优化为

const init = async () => {
  try {
    const { data } = await ActivitiApi.getFormDetail(sessionStorage.pageCode);
    if (data.code === 200) {
      const { column } = JSON.parse(data.data.columnInfo);
      res.value = data.data;
      res.value.columnList = column;
      formOrderData();
    } else {
      Toast.fail(data.message);
    }
  } catch (err) {
    console.error(err);
  }
};

 

9.用map循环+join函数代替传统的for循环+substring函数。

如将

let str = "";
for (let user of collectUser.value) {
  str += user.name + ",";
}
str = str.substring(0, str.length - 1);

优化为

let str = collectUser.value.map((user) => user.name).join(",");

 

10.用策略模式优化代码

如将

const onSelect = (item, action) => {
  switch (action.text) {
    case "修改表单":
      modifyFormInfo(item);
      break;
    case "填写人配置":
      configCollectUsers(item);
      break;
    case "管理员配置":
      configAllowUsers(item);
      break;
    case "删除":
      deleteTask(item);
      break;
  }
};

优化为

const onSelect = (item, action) => {
  const actions = {
    修改表单: modifyFormInfo,
    填写人配置: configCollectUsers,
    管理员配置: configAllowUsers,
    删除: deleteTask,
  };
  if (actions.hasOwnProperty(action.text)) {
    actions[action.text](item);
  }
};

 

11.使用逻辑或运算符 || 来处理 sessionStorage.xx 为 0 的情况,避免使用 if 判断语句。

如将

const addNode = () => {
  if (sessionStorage.nodeNo) {
    sessionStorage.nodeNo = Number(sessionStorage.nodeNo) + 1;
  } else {
    sessionStorage.nodeNo = 1;
  }
  router.push("/addApproval");
};

优化为

const addNode = () => {
  sessionStorage.nodeNo = (Number(sessionStorage.nodeNo) || 0) + 1;
  router.push("/addApproval");
};

 

posted @ 2020-09-08 10:56  罗毅豪  阅读(277)  评论(0编辑  收藏  举报