美文网首页
vue之代码优化

vue之代码优化

作者: Biao_349d | 来源:发表于2019-04-10 00:31 被阅读0次

vue之代码优化

  1. 组件名称的优化
  • 标签名,文件名, 组件名称统一。
<template>
    <su-pager />  
</template>
<script>
import suPager from './suPage.vue'
export default {
    components:{
        suPager
    }
}
  1. 数据存储优化。
    store存放经常变更的变量。

  2. vue页面数据优化

  • data内的数据越少越好, 优点: 性能提升, 代码简洁。

  • 多个同组的字段, 可用对象形式包裹, 例如form内的字段; 优点: 便于扩展内容;

  1. 链式调用优化-分行
// 不建议
queryUserList() {
  this.axios.get('/queryUserList', this.queryOption).then(res => {
    }).catch(err => {
    }
  )
}

// 建议
queryUserList() {
  this.axios
    .get('/queryUserList', this.queryOption)
    .then(res => {
    })
    .catch(err => {
    }
  )
}

  1. 三元优化
  • 实例一*

 // 不建议
 let data = this.radio5 == 1 ? this.diagram.outAmountList : this.radio5 == 2 ? this.diagram.orderTonnageList : this.diagram.orderAmountList 
 

 // 优秀
 let index = this.radio5 - 1,
 data = [this.diagram.outAmountList, this.diagram.orderTonnageList , this.diagram.orderAmountList][index]
 
  • 实例二*

 // 不推荐
 let userName = localStorage.userName ? localStorage.userName : 'admin'
 
 // 推荐
 let userName = localStorage.userName || 'admin'
  1. 优化判断
  • 多重判断,永远将特殊情况放在最前面
  // 不推荐
  if (res.code == 200) {
      
    localStorage.setItem('Variable1', JSON.stringify(res.data.Variable1))
    localStorage.setItem('Variable2', res.data.Variable2)
    localStorage.setItem('Variable3', res.data.Variable3)
    localStorage.setItem('Variable4', res.data.Variable4)
    localStorage.setItem('Variable5', res.data.Variable5)

    console.log('登录成功')
  } else {
    if (res.code == 511) {
        console.log('审核中, 请稍候!')
    } else if (res.code == 512) {
        console.log('审核成功, 欢迎登录!')
    } else if (res.code == 513) {
        console.log('审核失败, 请重试!')
    } else if (res.code == 514) {
        console.log('您的账号已被停用!')
    }
  }

  // 推荐

  if (res.code == 511) return console.log('审核中, 请稍候!')
  if (res.code == 512) return console.log('审核成功, 欢迎登录!')
  if (res.code == 513) return console.log('审核失败, 请重试!')
  if (res.code == 514) return console.log('您的账号已被停用!')
  
    localStorage.setItem('Variable1', JSON.stringify(res.data.Variable1))
    localStorage.setItem('Variable2', res.data.Variable2)
    localStorage.setItem('Variable3', res.data.Variable3)
    localStorage.setItem('Variable4', res.data.Variable4)
    localStorage.setItem('Variable5', res.data.Variable5)

  console.log('登录成功')
  • 多重if-else与对象判断法
    第一种是常见的判断方法,
    第二种采用swtich;
    第三种采用对象法,判断color是否在对象内,如果在则运行这个值;

//method1
     if (color) {
         if (color === 'black') {
             printBlackBackground();
         } else if (color === 'red') {
             printRedBackground();
         } else if (color === 'blue') {
             printBlueBackground();
         } else if (color === 'green') {
             printGreenBackground();
         } else {
             printYellowBackground();
         }
     }
     
 //method2
     switch(color) {
         case 'black':
             printBlackBackground();
             break;
         case 'red':
             printRedBackground();
             break;
         case 'blue':
             printBlueBackground();
             break;
         case 'green':
             printGreenBackground();
             break;
         default:
             printYellowBackground();
     }
  
 //method3
     var colorObj = {
         'black': printBlackBackground,
         'red': printRedBackground,
         'blue': printBlueBackground,
         'green': printGreenBackground,
         'yellow': printYellowBackground
     };
     if (color in colorObj) {
       colorObj[color]();
     }

还可以用es6来写哦

let currentTab = 'a';
const comparativeTotles = new Map([
    ['a', () => { console.log("a") }],
    ['b', () => { console.log("b") }],
    ['c', () => { console.log("c") }],
    ['d', () => { console.log("d") }]
 ])
if (comparativeTotles.has(currentTab)) {
  comparativeTotles.get(currentTab);
}

  1. 更新store的通用方法
const store = new Vuex.Store({
  state: {
    spread: false
  },
  mutations: {
    updataStore(state, option) {
      for (let k in option) {
        state[k] = option[k]
      }
    }
  }
})
 // 调用,第二个参数中传所有你要更新的store对象即可
 this.$store.commit(
  'updataStore',
     {
        userInfo: {
          companyId: res.data.companyId,
          companyName: res.data.companyName,
          userId: res.data.userId,
        },
        permissions: res.data.permissions
    }
 )
  1. indexOf的优化

正常我们可能会使用这种方式

var someText = 'javascript rules';
 if (someText.indexOf('javascript') !== -1) {
 }

 // or
 if (someText.indexOf('javascript') >= 0) {
  }

这里有更好的方式实现
利用按位取反运算符 (~)运算符,取得负数, 然后使用!!获取boolean值;

  var someText = 'text';
  !!~someText.indexOf('tex'); // someText contains "tex" - true
  !~someText.indexOf('tex'); // someText NOT contains "tex" - false
   ~someText.indexOf('asd'); // someText doesn't contain "asd" - false
  ~someText.indexOf('ext'); // someText contains "ext" - true
  1. 带数字的字符串拼接

明显是第一种看起来更加优雅;

 var one = 1;
 var two = 2;
   var three = '3';
//method 1
  var result = ''.concat(one, two, three); //"123"

//method 2
var result = one + two + three; //"33" instead of "123"

//method 3
var result ='' + one + two + three; //"123"

10 vue的链式调用

methods: {
  setName(name) {
    this.name = name;
    return   this;
  },
  setSex (sex) {
    this.sex = sex;
    return this;
  },
    init () {
      this.setName("张三").setSex ("16")
    }
}

  1. 转换数字
var one = '1';
var numberOne = +one; // Number 1

12、保持函数功能的单一性-函数式编程

Bad:

function emailClients(clients) {
  clients.forEach((client) => {
    const clientRecord = database.lookup(client)
    if (clientRecord.isActive()) {
      email(client)
    }
  })
}

Good:

function emailActiveClients(clients, isActiveClient, email) {
  clients
    .filter(isActiveClient)
    .forEach(email)
}

function isActiveClient(client) {
  const clientRecord = database.lookup(client)
  return clientRecord.isActive()
}
  1. 尾调用

f调用后,存在变量m ,n的记录, 但是当g调用完后, 则可以删除f的调用记录, 只保留g调用记录; 这叫做'尾调用优化', 即只保留内层函数的调用记录。
如果所有函数都是尾调用,那么完全可以做到每次执行时,调用记录只有一项,这将大大节省内存。这就是"尾调用优化"的意义。

function f() {
  let m = 1;
  let n = 2;
  return g(m + n);
}
f();
  1. 纯函数和非纯函数:

纯函数可以做到自给自足,对测试友好、没有外部依赖,既不受外部环境影响,也不会影响外部环境。

// 纯函数
function add(a) {
  var b = 0;
  return a + b;
}

// 非纯函数,依赖外部变量
var b = 0;
function add(a) {
  return a + b;
}

// 非纯函数,依赖系统时间
function now() {
  return new Date();
}

// 非纯函数,依赖随机数
function random(){
  return Math.random();
}

//非纯函数,设置外部 cookie
function setCookie(){
  document.cookie = "name=Porco";
}

相关文章

  • javascript知识点

    Vue.js 前后端同构方案之准备篇——代码优化 目前 Vue.js 的火爆不亚于当初的 React,本人对写代码...

  • vue之代码优化

    vue之代码优化 组件名称的优化 标签名,文件名, 组件名称统一。 数据存储优化。store存放经常变更的变量。 ...

  • Vue项目优化

    项目优化优化之vue.config.js中相关代码 涉及到的知识点: 1.修改webpack的默认配置 chain...

  • 基础面试4

    3.vue怎么优化代码vue是组件化开发的,对代码优化主要是组件的按需加载,可以提高加载的速度,还有v-if,减少...

  • Vue代码优化

    watch场景:组件创建的时候我们获取一次列表,同时监听input框,每当发生变化的时候重新获取一次筛选后的列表。...

  • Vue项目性能优化

    主要分为三个方面来优化 Vue 代码层面的优化 webpack 配置层面的优化 基础的 Web 技术层面的优化 一...

  • Vue脚手架优化

    记录脚手架搭建之后一些优化,包括结构、代码、易用性 1 vue.js 引用组件方式优化 vue.js 引用组件需要...

  • webpack优化技巧总结

    在vue应用程序中使用 单文件组件 优化Vue构建 浏览器缓存管理 代码分割(code splitting) 关于...

  • vue性能优化

    文章目录 1.代码优化 2.项目优化 3.其它优化 4.总结 本文主要针对的是 vue 2.x 版本的性能优化,并...

  • [笔记] Vue3.0源码解析

    Vue 3.0 源码解析 源码优化 目的是让代码更易于开发和维护。源码的优化主要体现在使用monorepo[htt...

网友评论

      本文标题:vue之代码优化

      本文链接:https://www.haomeiwen.com/subject/logwiqtx.html