首屏轮播图使用cdn加载webp图片的代码案例

目标:基于 CDN 加载 WebP 图片,且能自动降级为 PNG/JPG(兼容不支持 WebP 的浏览器)

  1. 第一步:封装 WebP 检测工具,在用户浏览器不支持webp的情况下加载png/jpg图片
js 复制代码
// src/utils/image.ts
let webpSupportCache: boolean | null = null;

/**
 * 检测浏览器是否支持 WebP(带缓存)
 */
export async function checkWebPSupport(): Promise<boolean> {
  if (webpSupportCache !== null) return webpSupportCache;

  return new Promise((resolve) => {
    const img = new Image();
    img.src = 'data:image/webp;base64,UklGRkoAAABXRXJjUgAAABAAAAAQAAABAAAAAQAAABgAAAAEAAAAA==';
    img.onload = () => resolve(img.width === 1);
    img.onerror = () => resolve(false);
  })
}

/**
 * 生成图片 URL(自动切换 WebP/原图)
 * @param cdnBase CDN 基础路径
 * @param imgName 图片名称(不含后缀)
 * @param ext 原图后缀(如 png/jpg)
 */
export function getImageUrl(cdnBase: string, imgName: string, ext: string = 'png'): string {
  if (webpSupportCache) {
    // 支持 WebP 则拼接 webp 后缀
    return `${cdnBase}/${imgName}.webp`;
  }
  // 不支持则用原图后缀
  return `${cdnBase}/${imgName}.${ext}`;
}
  1. 首屏轮播图组件
js 复制代码
相关推荐
品尚公益团队8 小时前
C#在asp.net网页开发中的带cookie登录实现
前端·c#·asp.net
没有了遇见9 小时前
AI Agent 是什么?—— 一文理解 LLM、Memory、Skills、Tools、MCP、Workflow,Context
android·前端·程序员
后台开发者Ethan9 小时前
setState组件更新
前端·javascript·react
谙忆10249 小时前
大文件上传实战:前端分片、断点续传、秒传与并发控制怎么落地
前端
轻动琴弦10 小时前
VoltTool —— 一站式在线开发者工具平台,69+实用工具免费使用
前端·chrome
就叫飞六吧10 小时前
不同站点iframe嵌套种cookie、localstorege.set() 关系
前端
星栈10 小时前
LiveView 怎么测:从组件测试到端到端,我终于不再只敢手点页面了
前端·前端框架·elixir
蜡台10 小时前
uniapp vue2 转 vue3
前端·javascript·uni-app·vue3·vue2
Web4Browser10 小时前
Headless 浏览器自动化适合哪些任务?巡检、截图和提交动作要分级
运维·前端·自动化
用户0595401744610 小时前
把前端内存泄漏排查从2小时压到5分钟,我们把它集成进了CI
前端·css