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】使用URL.createObjectURL() 和懒加载优化加载图片的技巧 -> 正文阅读

[JavaScript知识库]【vue】使用URL.createObjectURL() 和懒加载优化加载图片的技巧


前言

提示:有很多项目中会有加载图片的功能,有时候由于各种原因吧,图片可能加载不出来—懒加载。


提示:以下是本篇文章正文内容,下面案例可供参考

一、功能介绍

示例:小编介绍的是左侧是菜单栏右侧是显示的封面图片。

在这里插入图片描述

事件

   check2(row, index) {
      this.rowTypeName = row.noticeTypeName
      sessionStorage.setItem("left_isActive", index);
      this.isActive = index;
      if(row.noticeTypeName == "全部公告"){
        (this.isshow = true), (this.onshow = false);
      this.initialization()
      }else{
        (this.isshow = true), (this.onshow = false);
        this.$axios({
        method: "POST",
        url: http_infor() + "/v1.0/zg_common_service/queryPortalNoticeInfo",
        data: {
          queryInfo: {
            pageNum: this.pages2,
            pageSize: this.page_num2,
            filters: [
              {
                fieldName: "portalNoticeType.noticeTypeName",
                operator: "EQ",
                fieldValue: row.noticeTypeName,
              },
            ],
            sorters: [
              {
                sortField: "createTime",
                direction: "DESC",
              },
            ],
            connectOperator: "AND",
          },
        },
        connectOperator: "AND",
        headers: {
          "Content-Type": "application/json",
          Accept: "application/json",
          "X-Auth-Token": sessionStorage.getItem("token"),
        },
      })
        .then((res) => {
          this.pagetotal = res.data.total
          res.data.root.forEach((item) =>{
            console.log(item)
            this.$axios({
              method: "GET",
              url: http_infor() + "/v1.0/zg_common_service/getPortalNoticeInfoPicture?portalNoticeInfoId=" + item.id ,
              responseType:'blob',
              headers: {
                "Content-Type": "application/json",
                Accept: "application/json",
                "X-Auth-Token": sessionStorage.getItem("token"),
              },
            })
              .then((res2) => {
                console.log(res2.config.url )
                item.contentSource = res2.config.url
                console.log(res)
                var that = this
                //  通过blob格式下载流文件
                that.imageUrl = window.URL.createObjectURL(res2.data);  
              })
              .catch((error) => {
                // console.log(error);
              });
          }
          )
          this.boxlist = res.data.root;
          if (res.data.total == 0) {
            this.nozanwu = true;
          } else {
            this.nozanwu = false;
          }
        })
        .catch((error) => {
          // console.log(error);
        });
      }
    },

二、URL.createObjectURL()

URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL
的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。

URL.createObjectURL(blob)和FileReader.readAsDataURL(file)很相似,

通过URL.createObjectURL(blob)可以获取当前文件的一个内存URL
但是小编这里有些问题,就是使用这个方法可以实现,出现了一个致命问题没考虑图片是循环出来的,这样一系列操作后,拿到的单张图片,所以最后在循环中找问题,看看是哪里的错误,我是通过在循环数据里找了一个空的字段,然后使用 responseType:‘blob’, 这种方式,把url这个路径给了他,前端页面再次循环就可以显示了
代码如下(示例):

懒加载

在开发中,有一些页面以图片展示为主,界面不可见部分可能有很多图片用户并不会去看,而且图片消耗的流量十分多,必须要优化。推荐使用懒加载,有时候使用各种npm包即可解决,就比如前不久我们在登录需要保密性和·那个安全性上的一个加密,后端给了一堆文件搞了半天最后通过一个sm3的npm包解决了,哦买噶!!!
言归正传介绍下懒加载的使用

  1. vue 安装 lazyload
npm i vue-lazyload -s
  1. main.js 全局配置
import VueLazyload from 'vue-lazyload'
 
Vue.use(VueLazyload, {
  preLoad: 1.3, //预加载高度
  error: require('../static/img/error.jpg'), //没加载成功错误展示图片 
  loading: require('../static/img/loading.gif'), //加载等待图片
  attempt: 1 //尝试次数
})
  1. 使用 src 改为 v-lazy
    在这里插入图片描述
   <img v-lazy="item.contentSource" alt="" />

总结

:以上就是今天要讲的内容,本文仅仅简单介绍了加载图片的方法,而vue提供了大量能使我们快速便捷地处理数据的函数和方法,如有其他问题欢迎探讨。
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:39:54  更:2021-12-02 16:40:19 
 
开发: 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 7:02:48-

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