vite 实战图片预加载方案

带你玩转 Vite + Vue3 高低版本常用玩法 如此循环往复,严重影响开发人员的效率。当冷启动开发服务器时,基于打包器的方式启动必须优先抓取并构建你的整个应用,然后才能提供服务,如果项目很大,导致的一个必然结果就是,服务启动很慢,热更新很慢,效率降低。问题原因:低版本 Vite 的执行 preview 预览时,使用的 proxy 是 server 中的 proxy 配置,官方文档中提供的 preview 的 proxy 无效,这是低版本 Vite 的一个 bug,高版本已经修复,github 上有相关的 issue,也可以通过源码查看。 阅读详情
AI摘要

前端图片预加载可优化用户体验,减少加载延迟、提升性能和保证效果流畅。常见方式有HTML隐藏图片加载、JS动态创建Image对象等。Vite中可利用插件机制,在项目启动时提前请求public目录下的图片,首页直加载目录图片,打开其他页面时能快速显示。

📢vite 实战图片预加载方案

前端图片预加载是一种优化用户体验的技术,通过提前加载图片资源,确保用户在需要查看图片时能够快速显示,而不会因为图片加载延迟而导致界面卡顿或空白。

为什么需要预加载?

  1. 提升用户体验: 减少图片加载时的白屏或延迟。
  2. 优化性能: 对于经常访问的资源,提前加载可以避免重复加载,提升页面的响应速度。
  3. 流畅过渡: 在需要图片切换或动画时(例如轮播图或页面切换效果),预加载的图片能保证效果的流畅性。

常见的图片预加载方式

  1. HTML 中使用隐藏图片加载
    利用隐藏的 <img> 标签来提前加载图片资源。
<img src="example.jpg" style="display: none;" alt="预加载图片">
  1. JavaScript 动态创建 Image 对象
    通过 JavaScript 动态创建 Image 对象加载图片。
const preloadImage = (src) => {
  const img = new Image();
  img.src = src;
};
preloadImage('example.jpg');
  1. 使用 CSS background
    通过 CSS 定义背景图片加载。
.hidden-preload {
  background-image: url('example.jpg');
  visibility: hidden;
  position: absolute;
  width: 0;
  height: 0;
}
  1. Lazy Loading 与 Intersection Observer
    对于需要按需加载的图片,结合懒加载技术,在图片进入视口前预加载。
const lazyLoadImage = (img) => {
  const observer = new IntersectionObserver((entries) => {
    entries.forEach((entry) => {
      if (entry.isIntersecting) {
        const src = img.getAttribute('data-src');
        if (src) {
          img.src = src;
        }
        observer.unobserve(img);
      }
    });
  });
  observer.observe(img);
};

document.querySelectorAll('img.lazy').forEach(lazyLoadImage);
<img class="lazy" data-src="example.jpg" alt="Lazy load example">

vite中优雅的解决方案

我们🤔一下,预加载无非就是提前加载图片资源,然后丢在内存中,于是我有一个突发奇想我们在开发过程中会在 public 目录下存放很多的静态资源,图片是其中最占内存和带宽的部分。public 目录下总是会放很多的图片资源。我们利用 vite的插件机制在项目每次启动的时候讲目录下的图片进行提前请求,这样进入到其他页面的时候加载图片就很快了,就算是网速很慢的情况也是可以的。

不知道 vite 插件机制的请先自行学习一下

第一步创建 preloadImages 函数
import { type Plugin } from "vite"
import fg from "fast-glob"
interface PreloadImagesOptions {
    dir: string,
    attrs: {
        rel: "prefetch" | "preload"
    }
}
export const preloadImages = (optons: PreloadImagesOptions): Plugin => {
    const { dir, attrs = {} } = optons
    return {
        name: "vite-plugin-image-prefetch",
        transformIndexHtml(_html, ctx) {
            let images = fg.sync(dir, {
                cwd: ctx.server?.config.publicDir
            }) // 拿到目录下所有的图片路径
            images = images.map(file => ctx.server?.config.base + file)
            return images.map(href => {
                console.log(href)
                return {
                    tag: "link",
                    attrs: {
                        rel: "prefetch",
                        href: href,
                        as: "image",
                        ...attrs
                    }

                }
            })
        },
    }
}

preload 资源在当前页面使用,会优先加载
prefetch 资源在未来页面使用,空闲时加载

vite 中使用
preloadImages({
    dir: "**.{jpg,png,svg,jpeg}",
    attrs: {
      rel: "preload",
    }
  })

首页会直加载public目录下所有的
在这里插入图片描述

打开其他页面的时候会直接加载出图片不会出现一个个加载,有的加载一半的情况了,体验是非常好的
在这里插入图片描述

如果有问题可以联系我
在这里插入图片描述
在这里插入图片描述

别再为Vue3+Vite打包后图片不显示发愁了!三种动态引入Assets图片的保姆级方案 本文详细解析了Vue3+Vite项目中动态引入Assets图片的三种实用方案,解决打包后图片不显示的常见问题。从直接导入到new URL+import.meta.url方案,再到import.meta.glob批量加载,提供全面的技术对比和实战代码示例,帮助开发者高效处理图片资源加载问题。 阅读详情

相关推荐

基础篇02|Vite 快如闪电的秘密:依赖预构建

Vite的依赖预加载机制及其依赖预构建优点

石小石Orz的博客 4943

vite中引入图片的几种方式

该目录中的资源在开发时能直接通过 / 根路径访问到,并且打包时会被完整复制到目标目录的根目录下。请注意: 引入 public 中的资源永远应该使用根绝对路径 —— 举个例子,public/icon.png 应该在源码中被引用为 /icon.png。在一个 JavaScript 模块中,通过相对路径我们就能得到一个被完整解析的静态资源 URL:(相对路径一定要写正确,当前引入图片的文件,相对图片的位置)生产环境,开发环境统统无效。目录会更省事,不管是开发环境还是生产环境,可以始终以根目录保持图片路径的一致。

blue_121的博客 1万+

使用vue3+vite创建的项目,动态引入本地图片,不能直接使用require

使用vue3+vite创建的项目,动态引入本地图片,不能直接使用require

bao_Heng的博客 1816

Vue3的vite中图片的动态加载

【代码】Vue3的vite中图片的动态加载。

yiyueqinghui的博客 6101

Keil环境下单片机串口通信实战:如何用printf发送中文(附完整代码)

本文详细解析了在Keil开发环境下,单片机通过串口通信发送中文信息时产生乱码的根本原因及解决方案。核心在于理解并统一编码(如GB2312或UTF-8),并正确重定向printf函数。文章提供了针对STC89C52和STM32F103的完整代码示例,涵盖工程配置、编码设置、调试技巧,帮助开发者实现稳定可靠的中文串口输出。

weixin_29168675的博客 466

保姆级教程:用Kvaser DB Editor从零创建你的第一个DBC文件(附CAN信号属性详解)

本文提供了一份详细的Kvaser DB Editor教程,指导用户从零开始创建DBC文件,并深入解析CAN信号属性的关键设置。通过步骤清晰的安装指南、信号属性配置详解和实用技巧,帮助工程师和学生快速掌握CAN总线通信的核心工具,提升工作效率。

weixin_27076351的博客 246

vite静态图片加载

三种方式(应该不止这三种)

weixin_42447143的博客 620

【Isaac Sim】无头服务器远程桌面连接实战:Turbovnc配置与常见问题解决

本文详细介绍了在无头GPU服务器上通过Turbovnc远程桌面连接并运行NVIDIA Isaac Sim的实战教程。针对无图形界面服务器运行仿真软件的核心痛点,文章提供了从Turbovnc安装配置、SSH隧道建立,到以普通用户身份启动服务、解决GLXBadFBConfig等常见图形错误的完整方案,帮助开发者在云端高效部署机器人仿真环境。

weixin_29254673的博客 772

从零打造Vite图片预加载插件:让你的Web应用秒开体验

本文介绍了一款自研的Vite插件vite-plugin-preload-images,用于优化图片加载性能。该插件通过智能预加载图片资源,显著提升页面加载速度与用户体验。核心特性包括:支持多目录配置、基于文件路径模式的优先级算法、根据文件大小智能选择preload/prefetch策略、开发环境缓存机制等。实际应用显示,该插件可减少40%首屏加载时间,优化50%构建时间。插件通过优先级排序、数量限制和动态加载策略,实现了高效资源管理和网络优化。

XL984507092的博客 438

Realsense D435i运行ORB-SLAM3

【代码】Realsense D435i运行ORB-SLAM3。

MAX_Hope的博客 2563

【机器视觉】Halcon 最新版本安装教程(HALCON 24.11.1.1 Progress-Steady)

注:如果使用评估版本,下载前先了解最新评估授权密钥所支持的版本。。近几年不同版本安装过程类似,均可参考本教程。

OpenSeek的博客 3万+

Vite4静态资源处理:wzry项目图片优化最佳实践

王者荣耀图鉴项目(wzry)是一个基于 Vue3+TypeScript+Vite4+Pinia2 构建的高性能游戏资料库应用,专门为《王者荣耀》玩家提供英雄、皮肤、装备等全方位游戏资料查询服务。该项目在处理大量静态资源(特别是图片资源)方面有着独到的优化策略,为现代前端项目的静态资源处理提供了宝贵经验。 ## 📦 项目静态资源架构设计 wzry项目采用了创新的**压缩包预加载**方案来解决大

gitblog_01107的博客 960

HDLBits答案汇总

前言 该博客为本人做HDLBits习题时的心得记录总结,欢迎大家一起交流进步。 HDLBits网站链接 Verilog Language Basics Vectors Modules:Hierarchy Procedures More Verilog Features Circuits Combinational Logic Basic gates Multiplexers Arithmetic Circuits Karnaugh Map to Circuit Sequential Logic Latche

谦豫 9万+

Vite 动态导入静态资源与自动依赖发现实战解析

在 Vite 中,动态加载图片、JSON 等静态资源是高频需求,但动态路径拼接可能导致构建失败或资源未识别。通过上述实践,开发者可以高效管理 Vite 中的动态资源,同时精准控制依赖预构建策略,实现性能与可维护性的最佳平衡。的子模块,导致运行时加载延迟。必须与 Glob 生成的键。:Vite 默认不会预构建。

Yue 1145

ESD防护设计宝典(二十三):ESD与EOS失效差异分析

ESD和EOS是电子制造业面临的两大挑战,随着电子产品向更高集成度、更低工作电压和更高工作频率发展,这一问题将更加突出。根据美国军方上世纪八十年代与可靠性分析中心(RAC)共同建立的现场失效返回程序(FFRP)统计数据,产品现场返回中EOS占比高达46%,而ESD仅占6%,另有6%的案例难以区分是EOS还是ESD。

m0_56451176的博客 320

基于 PID 算法的 STM32 步进电机高精度位置控制系统设计与实现(工业自动化应用)

硬件层面:选用 STM32F103C8T6+A4988 + 欧姆龙编码器的组合,兼顾工业可靠性与成本,接线需注意强弱电分离和信号抗干扰;软件层面:核心为位置式 PID 闭环控制,Mermaid 流程图清晰展现 “采集 - 运算 - 驱动” 的闭环逻辑,代码模块化易移植;性能层面:无负载定位误差≤±1 脉冲,带载误差≤±3 脉冲,满足工业自动化高精度位置控制需求。

weixin_42300449的博客 193

前端「页面预加载」

一、link 标签预加载 二、JavaScript 代码预加载 三、本地存储缓存预加载

青蛙king的博客 3020

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

vue3 vite 怎么动态引用图片

1、把图片放到public文件夹下。 2、使用vite的import.meta.glob或import.meta.globEager,两者的区别是前者懒加载资源,后者直接引入。 <img :src="getSrc('Contact_us')" alt=""> getSrc(name) { const path = `./../assets/images/about/${name}.png`; const modules = import.meta.glo

Jkssns的博客 6406

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Vite 构建层面的图片优化:从压缩到转换

图片优化是投入产出比最高的性能优化手段。一个配置得当的 Vite 构建流程,可以在完全不改变开发体验的前提下,让图片加载耗时减少40-60%,首屏加载速度提升30%以上 。

wuhen_n的博客 516

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

vue3+vite 关于图片渲染问题

但是我使用了swiper,你就会发现,swiper会比promise先加载,这个时候你就只能在setup()去处理数据了。这样就需要考虑到一个问题,就是回显的时候,数据需要处理,没处理前返回来的是。这样就可以了,完结,撒花花!如果你没有用swiper,我认为可以直接在方法里写:例如。我是用import去导入的图片。

m0_74107869的博客 630

vite中JS动态引入图片

在HTML中可以使用如下方法获取图片:但是我们想要在JS中获取图片怎么办?

coco_2233的博客 718

前端资源预加载:别再让你的用户等得花儿都谢了

各位前端同行,咱们今天聊聊前端资源预加载。别告诉我你还在让用户等资源加载,那感觉就像在等公交车。

大山哥 2520

5分钟搞定vue-lazyload构建配置:Vite与Rollup实战指南

还在为Vue项目图片加载性能发愁?还在纠结构建工具配置不兼容?本文将带你一文掌握vue-lazyload在Vite与Rollup中的完整集成方案,从安装到优化,让你的图片懒加载体验起飞。 读完本文你将获得: - Vite环境下3步快速集成vue-lazyload - Rollup构建配置最佳实践 - 常见兼容性问题解决方案 - 性能优化终极指南 ## 关于vue-lazyload vue-l...

gitblog_00578的博客 1036

Vue3+Vite字体性能优化:子集化、预加载与font-display实战

字体是影响网页渲染流水线、主线程执行和网络调度的复合型关键资源,其加载行为直接决定首屏文本可见性、布局稳定性(CLS)与用户可交互时间(TTI)。现代中文字体因覆盖GB2312/Unicode扩展区,单文件常超500KB,叠加未子集化、同步阻塞加载及font-display配置缺失,极易引发FOIT白屏、FOUT跳变与LCP延迟。通过字体子集化(fonttools/pyftsubset)、CSS内联+link preload预加载、font-display fallback/swaps策略与size-adj

weixin_29012677的博客 307

vite项目SEO优化

提高关键词密度:在操作企业站的时候,我们经常遇到是站点首屏一个大的横幅 banner,几乎占用了首页的大部分页面,为了有效的提高首页核心关键词密度,我们只能利用一切办法增添关键词,比如:在图片的 alt 标签中添加。语义化代码能够让搜索引擎容易理解网页,即使脱去了 CSS 这一层外衣,整个网页的结构也是清清楚楚的,无论是搜索引擎还是阅读者,都能够很容易的分辨网页的结构。增强内容相关性:它是可以利用汉字介绍文章内容的,对于一些特定的企业产品,由于视觉的体验,它往往是少文字的。

qq_36634008的博客 668

基于Vue3实现图片瀑布流排序

vue3+tailwindcss实现瀑布流组件

weixin_44416058的博客 2565
上一篇: naiveui 在 nuxt 中使用 css 资源首次未加载
下一篇: Hono与Honox一次尝试
小小荧
博客等级 码龄9年 133粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值