图片、数据、路由的懒加载

一、图片、数据懒加载

图片(数据)正式进入到可视区中时,才加载对应的图片(数据),否则不请求图片(数据)

基本使用(useIntersectionObserver的基本使用)

1、下包,此方法是vueuse封装的useIntersectionObserver实现的

npm i @vueuse/core

2、核心代码-图片懒加载
<script lang="ts" setup>
import { useIntersectionObserver } from '@vueuse/core'
import { ref } from 'vue'
const target = ref<HTMLImageElement | null>(null)
// 实时监听这个dom是否在可视区内
const { stop } = useIntersectionObserver(target, ([{ isIntersecting }]) => {
// 回调函数: 当 isIntersecting 变化时:从可见->不可见; 不可见->可见
//    isIntersecting: 当前是否可见?
  console.log('执行了')
  console.log(isIntersecting)

  if (isIntersecting) {
    target.value!.src =
      'https://yanxuan-item.nosdn.127.net/79f289a4e975fd030d5c37b98b9282c5.jpg'
      // stop停止监听
      stop()
  }
})
</script>

<template>
  <div style="height: 3000px"></div>
  <img ref="target" alt="" />
</template>

<style scoed lang="less"></style>
3、数据懒加载

数据的懒加载与图片的方法差不多,将内部的图片换成数据请求即可

<script lang="ts" setup>
const { home } = useStore()
const target = ref(null)
const { stop } = useIntersectionObserver(target, ([{ isIntersecting }]) => {
  console.log(isIntersecting)
  // 判断是否看见
  if (isIntersecting) {
  	// 发送的请求
    home.getNewList()
    stop()
  }
})
</script>

<template>
  <div class="home-new">
    <HomePanel ref="target" title="新鲜好物" sub-title="新鲜出炉 品质靠谱">
    </HomePanel>
  </div>
</template>

二、路由懒加载

概念

路由对应的组件使用到的时候才去加载

作用

提高页面的响应速度

使用

导入的时候使用ES提供的语法const xxx = () => import(‘@/components/xxx’)

const router = createRouter({
  history: createWebHashHistory(),
  scrollBehavior: () => {
    return {
      top: 0,
    }
  },
  routes: [
    {
      path: '/',
      component: Layout,
      children: [
        {
          path: '',
          component: Home
        },
        {
          path: 'category/:id',
          // 路由懒加载
          component: () => import('@/views/Category/Category.vue')
        }
      ]
    }
  ]
})
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nuxt.js是一个基于Vue.js构建的现代化Web应用框架,它内置了SPA(单页应用)功能,使得开发者能够快速地创建高性能、响应式且优化良好的应用程序。关于Nuxt 2图片懒加载,实际上Nuxt.js并没有直接提供针对图片懒加载的特定特性。然而,作为一个优秀的前端框架,Nuxt 2允许开发者通过集成第三方库或自定义解决方案来实现各种高级功能,包括图片懒加载。 ### 实现图片懒加载的方式: #### 1. 使用第三方库 一种常见的做法是引入专门用于图片懒加载JavaScript库,如`vue-lazyload`或`img-lazy-load`等。这些库通常提供简单的API和组件,使得开发者可以轻松地在页面上添加懒加载的功能。例如,在项目中安装并导入`vue-lazyload`之后,可以在需要懒加载图片元素中使用其提供的`<LazyLoad>`组件: ```html <template> <div class="gallery"> <lazy-image :src="imageUrl" v-for="image in images" :key="image.src"> <!-- 图片加载完毕后的替代内容 --> <div slot-scope="{ src }" class="placeholder"> Loading... </div> </lazy-image> </div> </template> <script> import LazyImage from 'vue-lazyload'; export default { components: { LazyImage, }, data() { return { images: [ { src: 'path/to/image1.jpg' }, { src: 'path/to/image2.jpg' }, // 更多图片路径... ], }; }, }; </script> ``` #### 2. 自定义解决方案 对于更复杂的需求,开发者可以选择自定义懒加载的实现逻辑。这通常涉及到监听浏览器窗口的滚动事件,当用户浏览到特定的位置时,才开始加载图片。这种策略通常会结合一些性能优化技术,比如利用CSS `object-fit` 或者将图片尺寸设置得较小以便更快加载,并在适当的时候调整大小。 #### 3. 优化图像和加载策略 除了以上提到的技术之外,合理优化图像的原始文件大小也是一个关键点。使用像TinyPNG或Compress.IO这样的工具可以有效地减少图像大小而不会显著影响视觉质量。此外,考虑使用CSS `background-size` 和 `background-repeat` 属性预加载图片的一部分,以及合理使用HTTP缓存策略,都可以进一步提升用户体验。 ### 相关问题: 1. **如何选择适合项目的图片懒加载方案?** 应根据项目需求、资源限制和技术栈综合考虑。如果项目对性能有极高的要求并且熟悉JavaScript库的使用,则可以选择使用第三方库;如果是希望高度定制化并控制加载流程,则可能更适合自定义解决方案。 2. **图片懒加载对SEO的影响是什么?** 懒加载本身并不直接影响搜索引擎的爬取过程,但合理的使用可以提高页面加载速度,进而间接改善网站的搜索排名和用户体验。 3. **Nuxt 2如何与其他库配合实现高效数据加载?** Nuxt 2支持动态路由和组件的复用,与懒加载插件(如上述使用的`vue-lazyload`)配合,可以有效管理数据请求和渲染顺序,避免不必要的资源加载,特别是在处理大量数据集或异步加载内容时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值