前端优化-懒加载

1.懒加载

        ①.路由懒加载:简单来说就是需要用户访问这个路由页面的时候 才会加载,反之不会加载。

        ②.图片懒加载:同理 页面视口中出现这个图片资源的时候 才会加载。

 2. 路由懒加载

   下面这个就是没有进行懒加载的路由,这样的路由多的话 页面渲染会很满,因为你有很多个这样的路由页面需要浏览器去加载.
import Login from '@/views/Login/index.vue'

{
   path: '/login',
   component: Login
 },


下面这个就是一个进行懒加载的路由

  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },


直接在路由表中的component中通过import引入路由路径,项目中对所有路由进行懒加载,那么浏览器运行项目渲染页面速度就会提升很多。

3.图片懒加载指令

    "指令",顾名思义就是封装自定义指令,再给需要懒加载的图片添加指令 ,就可以实现懒加载。

这里 需要用到一个Vue的插件VueUse(VueUse | VueUse

根据文档中"起步模块",将Use引入你的项目,main.js全局配置。

用的就是"useIntersectionObserver"这个函数,它可以帮我们监听页面元素是否进入视口。

// 引入方法
import { useIntersectionObserver } from '@vueuse/core'


// 定义全局方法
app.directive('lazyImg',{
    mounted(el,binding){
        // el: 绑定那个元素
        // binding: 表达式后面的值
        console.log(el,binding.value)
        useIntersectionObserver(
            // 监听对象,布尔值-监听对象是否进入视口区域
            el,([{ isIntersecting }]) => {
                console.log(isIntersecting)
                if(isIntersecting){  //如果为true 说明进入了视口区域
                    // 进入可视区域
                    el.src = binding.value
                }
            },
          )
    }
})

<img v-lazyImg="item.picture" />


这样就对这个图片绑定了懒加载的指令,自定义指定绑定前面得加 V-

1.定义在main.js中,通过app.出方法,"lazyImg"就是我们的指令名字

2.el:绑定的元素  binding:表达式的值

3.通过我们引入的函数,来监听我们绑定的值(el),他的值(binding.value),这里我们绑定的是img 那么他的值肯定就是图片。

4.isIntersecting是一个布尔值 true的话那么说明我们绑定的这个el的binding.value进入了视口,已经可以被用户看到了,那么这个时候 再加载我们的图片。这样就实现了这个图片的懒加载

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值