IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue常用优化方案 -> 正文阅读

[JavaScript知识库]vue常用优化方案

1、路由懒加载

原理:https://blog.csdn.net/weixin_44869002/article/details/106288371
将需要进行懒加载的子模块打包成独立的文件(children chunk);
借助函数来实现延迟执行子模块的加载代码;

routes: [
  {
     path: '/home',
     component: () => import('./home.vue')
  }
]

2、keep-alive缓存页面

原理:https://www.jianshu.com/p/9523bb439950

根据LRU策略来设置缓存组件新鲜度,将很久未访问的组件从缓存中删除。

<keep-alive>
  <router-view>
</keep-alive>

3、使用v-show复用DOM,比v-if效果更好

4、v-for遍历避免使用v-if(可以将if放在父级别或者将数据过滤出来)

<ul>
  <li
    v-for="(item,index) in userList"
    :key="item.id">
    {{ item.name }}
  </li>
</ul>
computed: {
  userList: function () {
    return this.item.filter(function (item) {
         return item.isActive
    })
  }
}

5、长列表性能优化

5-1、如果列表大量数据,纯粹的展示,不需要响应话,Object.freeze 方法来冻结一个对象,一旦被冻结的对象就再也不能被修改了。

export default {
  data: () => ({
    users: {}
  }),
  async created() {
    const users = await axios.get("/api/users");
    this.users = Object.freeze(users);
  }
};

?5-2、采用虚拟滚动,只渲染少部分区域内容

<template>
  <RecycleScroller
    class="scroller"
    :items="list"
    :item-size="32"
    key-field="id"
    v-slot="{ item }"
  >
    <div class="user">
      {{ item.name }}
    </div>
  </RecycleScroller>
</template>
 
<script>
export default {
  props: {
    list: Array,
  },
}
</script> 
 
<style scoped>
.scroller {
  height: 100%;
}
 
.user {
  height: 32%;
  padding: 0 12px;
  display: flex;
  align-items: center;
}
</style> 

参考以下开源项目 vue-virtual-scroll-list?和?vue-virtual-scroller 来优化这种无限列表的场景的。

6、事件销毁

vue组件销毁时,会自动解绑指令和事件监听,但仅限组件本身的事件。如果在 js 内使用 addEventListener/setInterval/setTimeout?等方式是不会自动销毁的,我们需要在组件销毁时手动移除这些事件的监听,以免造成内存泄露。

mounted() {
   this.timer = setInterval(this.get, 1000);
},
beforeDestroy() {
   clearInterval(this.timer);
}

7、图片懒加载

对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。这样对于页面加载性能上会有很大的提升,也提高了用户体验。我们在项目中使用 Vue 的 vue-lazyload 插件:

<img v-lazy="/static/img/1.png">

8、第三方插件按需加载

像element-ui按需引入,避免体积过大

import vue from 'vue'
import { Button,Select } form 'element-ui'

vue.use(Button)
vue.use(Select)

9、子组件分割

创建一个组件的时候也创建了一个与之对应的watcher实例,
如果这个组件中的数据发生了变化,其实只会调用该组件的渲染函数
如果在应用程序中,合理切割组件的力度,比如说将一个经常发生数据变化的一块内容,切割成一个组件,将来频繁执行的渲染函数和更新函数和打补丁的范围就变得更小了.所以把数据变化频繁的提取为组件,可以有效地提升性能。

10、变量本地化

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:18:34  更:2021-10-18 17:19:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:12:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码