vue里面如何使用图片的懒加载

目录
  • 前言
  • 一、安装相关的包
  • 二、使用步骤
    • 1.引入
    • 2.使用
  • 三、关于包的相关构成
    • 1. 简单介绍
    • 2. 简单操作
  • 总结

前言

什么是懒加载

  • 通俗地讲就是需要用到图片的时候再去加载
  • 懒加载的好处在于减少服务器的压力,在网络比较慢的情况下,可以提前给这张图片添加一个占位图片,提高用户的体验。

一、安装相关的包

安装懒加载所需的包

npm install vue-lazyload --save

二、使用步骤

1.引入

在项目的入口文件引入包,然后注册

代码如下(示例):

import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
// 引入插件
import VueLazyload from 'vue-lazyload'
// 注册插件
Vue.use(VueLazyload,{
  loading:'https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg' // 懒加载默认图片
})
new Vue({
  render: h => h(App),
}).$mount('#app')

一些参数的解析:

  • preLoad:表示lazyload的元素,距离页面底部距离的百分比.计算值为(preload - 1),默认值为1.3
  • error:表式加载失败展示的图片,需要传入一个字符串作为解析
  • loading:表式加载成功展示的图片,需要传入一个字符串作为解析
  • attempt:图片加载失败后的重试次数,需要传入一个Number

修改懒加载的样式可以使用以下代码:

img[lazy="loading"]{
  display:block;
  width:150px !important;
  height:150px !important;
  margin:0 auto;
  }

这样的样式可以根据自己的需求而定,并不是必须配置

详细内容见:https://www.npmjs.com/package/vue-lazyload

2.使用

在创建好的项目里面简单使用

使用 ( :src—>v-lazy )

代码如下(示例):

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png" />
    <br />
    <img v-lazy="a ? img[0] : img[1]" @click="changeImg" />
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      a: true,
      img: [
        // 图片一
        'https://tse1-mm.cn.bing.net/th/id/OIP-C.ETHKvrgFkIGb1teNrFHIYQHaLH?w=186&h=279&c=7&r=0&o=5&dpr=1.25&pid=1.7',
        // 图片二
        'https://tse2-mm.cn.bing.net/th/id/OIP-C.zPTuPEWVwIUcWgJSi93yLwHaLG?w=186&h=279&c=7&r=0&o=5&dpr=1.25&pid=1.7'
      ]
    }
  },
  methods: {
    changeImg() {
      this.a = !this.a
    }
  }
}
</script>
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

如果是循环出来的图片,我们需要指定一个key值,例如:

 <img v-lazy="img.src" :key="img.src" >

观察是否实现懒加载

1.首先需要把项目运行起来

在控制台输入npm run serve

2.定位到相关的目录打开开发者调试(F12)

3.找到 “网络的选项” ,把网络改成慢速3G,再打开禁用缓存

4.刷新界面,观察图片的变化

三、关于包的相关构成

1. 简单介绍

包的主要构成是使用自定义插件和自定义指令来体现的

2. 简单操作

在src文件夹下创建plugins的文件夹,里面用于封装插件,再在该文件夹下创建TheWorld.js的文件书

写插件,代码如下:

// 插件暴露的必须是一个对象
let TheWorld = {}
TheWorld.install = function (Vue, options) {
  // console.log('我是插件,我调用了') // 当在main.js文件引入注册的时候就会调用
  // console.log(Vue)  // 可以收到参数Vue
  // console.log(options)  // 可以收到参数配置对象
  // 有了Vue,我们可以调用Vue身上的系列api,比如Vue.component;Vue.filter等等

  Vue.directive(options.name, (element, params) => {
    // console.log('我执行了') // 当页面使用的时候就会执行
    // 会收到参数element:绑定的元素;params:该对象的一些对象信息

    element.innerHTML = params.value.toUpperCase()

    // 在params里面有个参数modifiers里面保存着修饰符,当你使用自定义指令的时候加上的修饰符将存入modifiers里面
  })
}
export default TheWorld

Vue.js的插件应该暴露一个install方法。这个方法的第一个参数是Vue构造器,第二个参数是一个可选的选项对象

在页面我们就可以使用了:

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png" />
    <br />
    <p v-world="text"></p>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      text: 'theworld'
    }
  }
}
</script>
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

此时页面呈现的就是THEWORLD了

了解更多详情参考Vue的文档:https://cn.vuejs.org/v2/guide/custom-directive.html

总结

以上就是关于在Vue里面图片懒加载的一种处理方式,处理图片懒加载的方法有很多种,但核心固然不变,实现图片懒加载的简单原理,在于监听图片的变化,将变化的图片替代所展示的默认图片。

希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Vue lazyload图片懒加载实例详解

    文档:https://github.com/hilongjw/vue-lazyload 1.安装 cnpm i vue-lazyload -S 或 npm i vue-lazyload -S 2.实例 导入配置等操作 src/main.js import Vue from 'vue' import App from './App' import router from './router' //[1]导入懒加载 import VueLazyload from 'vue-lazyload' Vue

  • vue项目中图片懒加载时出现的问题及解决

    目录 vue图片懒加载的问题 vue图片懒加载实现步骤 vue图片懒加载踩过的坑 今天踩过的坑总结 vue图片懒加载的问题 项目中遇到一个问题,记录一下,vue项目中前期没有做图片懒加载的时候,当图片出现错误或者显示路径不对,我加了onerror事件进行错误监听并添加一张默认的图片,优化用户体验. 后期因为图片数量变多,所以加入了图片懒加载,但在懒加载中挂载时只加了loading的图片,没有加error,所以导致页面图片未正常加载的地方出现默认图片闪烁的现象,最后在挂载时加入error引入一张默

  • vue项目实现图片懒加载的简单步骤

    目录 1.安装vue-lazyload插件 2.在main.js中进行引用 3.使用(将图片设置为懒加载) 总结 1.安装vue-lazyload插件 npm install vue-lazyload --save-dev 2.在main.js中进行引用 import VueLazyload from "vue-lazyload"; Vue.use(VueLazyload); //或者自定义配置插件 Vue.use(VueLazyload, { preLoad: 1.3, error:

  • vue 实现图片懒加载功能

    一个页面图片比较多的时候,需要对界面的图片进行懒加载处理,今天遇到了,做个懒加载的笔记. 1,需要安装vue的懒加载插件. npm install vue-lazyload --save-dev 2,需要在main.js里面进行引用. import VueLazyload from "vue-lazyload"; Vue.use(VueLazyload); 或者自定义 Vue.use(VueLazyload, { preLoad: 1.3, error: 'dist/error.png

  • vue3+typescript实现图片懒加载插件

    github项目地址: github.com/murongg/vue- 求star 与 issues 我文采不好,可能写的文章不咋样,有什么问题可以在留言区评论,我会尽力解答 本项目已经发布到npm 安装: $ npm i vue3-lazyload # or $ yarn add vue3-lazyload 需求分析 支持自定义 loading 图片,图片加载状态时使用此图片 支持自定义 error 图片,图片加载失败后使用此图片 支持 lifecycle hooks,类似于 vue 的生命周

  • vue3组合式api实现v-lazy图片懒加载的方法实例

    目录 前置知识 Intersection Observer Vue3指令周期 image对象 思路 完整代码 总结 前置知识 Intersection Observer 浏览器提供api,用于检测目标元素和祖先元素/顶级文档视窗 (viewport) 交叉状态的方法. const observer = new IntersectionObserver(function (IntersectionObserverEntry) {},options); observer.observe(el); 构

  • Vue2 中自定义图片懒加载指令 v-lazy实例详解

    目录 引言 1.涉及到的主要知识讲解 1.1 Vue2 中自定义指令 1.1.1 指令对象的钩子函数 1.1.2 钩子函数参数 1.2 使用事件总线进行模块之间的通信 1.3 使用到的 Web API 1.3.1 Element.clientHeight 1.3.2 Element.getBoundingClientRect() 2.图片懒加载指令的基本介绍 2.1 最终的实现效果 2.2 图片懒加载指令的注册与使用 3. 实现图片懒加载的原理 3.1 如何监听容器的滚动条的滚动? 3.2 使用

  • vue里面如何使用图片的懒加载

    目录 前言 一.安装相关的包 二.使用步骤 1.引入 2.使用 三.关于包的相关构成 1. 简单介绍 2. 简单操作 总结 前言 什么是懒加载 通俗地讲就是需要用到图片的时候再去加载 懒加载的好处在于减少服务器的压力,在网络比较慢的情况下,可以提前给这张图片添加一个占位图片,提高用户的体验. 一.安装相关的包 安装懒加载所需的包 npm install vue-lazyload --save 二.使用步骤 1.引入 在项目的入口文件引入包,然后注册 代码如下(示例): import Vue fr

  • vue elementUI table表格数据 滚动懒加载的实现方法

    在项目中遇到了一个性能问题 vue+elementUI table表格展示数据,当数据很多的时候,不能一页显示完,同时一次请求数据量太大,会增加网页渲染的时间,影响体验, 这个时候常常有两种方法处理, 1.分页,如下 2.如果我不想分页,又想在一页显示全部数据呢?这个时候其实就可以用数据懒加载了 如下一开始表格只显示31行数据 当将滚动条拉到低的时候,就会再加载31条数据,如果剩下的数据不足31,那就加载剩下的 根据项目需求,这需要一页可以看到全部数据,所以我选择了第二中方式 那么第二种方式要怎

  • Vue中使用import进行路由懒加载的原理分析

    目录 使用import进行路由懒加载的原理 (1)遵循规范 (2)调用时间 (3)本质 vue路由懒加载,使用import无法处理 解决 使用import进行路由懒加载的原理 首先我们来说说,import 和 require 的区别 node 编程中最重要的思想就是模块化,import 和 require 都是被模块化所使用. (1)遵循规范 require是 AMD规范引入方式 import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法 (2)调用时间 require是运行

  • jquery实现异步加载图片(懒加载图片一种方式)

    首先将插件在jq后面引入 (function($) { // alert($.fn.scrollLoading); $.fn.scrollLoading = function(options) { var defaults = { attr: "data-url" }; var params = $.extend({}, defaults, options || {}); params.cache = []; $(this).each(function() { var node = t

  • Vue自定义图片懒加载指令v-lazyload详解

    Vue是可以自定义指令的,最近学习过程中遇见了一个需要图片懒加载的功能,最后参考了别人的代码和思路自己重新写了一遍.以下将详细介绍如何实现自定义指令v-lazyload. 先看如何使用这个指令: <img v-lazyload="imageSrc" > imageSrc是要加载的图片的实际路径. 为了实现这个指令,我们首先单独建立一个文件,名字为lazyload.js.并填写基本的代码,如下: //Vue 图片懒加载,导出模块 export default (Vue , o

  • Vue通过懒加载提升页面响应速度

    概述 项目的目的是要通过数据透视表和Excel公式来分析公司的各项运营数据.不过在集成后,在开发环境页面运行流畅,大量数据加载处理也很快.但是发布生产后,在用户每次打开页面时,加载时间上相较开发阶段均有所降低,经过排查速度变慢是由于发布包的vendor.js变大所导致的,这个文件加载每次都需300毫秒左右,由于小的Vue项目并没有做模块划分,所以所有的代码都直接打包到了vendor中,在集成了新功能后,发布包也随之变大了. 既然找到了原因,就开始着手优化,在前端对于需加载较大资源时,一般都采用懒

  • vue组件代码分块和懒加载讲解

    目录 懒加载组件 问题与解决方案 加载中组件 错误处理组件 preload 和 prefetch 总结 前端开发中,随着业务和页面增加,以组件为基本单位的结构下,组件数量会增长极快,为了优化我们会很显然地想要进行一些工作: 代码分块 懒加载非必要资源文件 非必要资源,指的首次渲染出某页面所不必要的资源,如因为用户操作才出现的图片.弹窗等. 代码分块和懒加载在页面层面具有极大的优化作用,用户很可能只是浏览dashboard页面,可能根本就不会去看详情等页面,那我们就不必将详情页面的代码和dashb

随机推荐