实现资源预加载 通过HTML的标签直接声明需要预加载的资源,浏览器会在页面加载早期阶段优先获取这些资源。适合预加载关键C…">
当前位置:首页 > JavaScript

js 实现预加载效果

2026-01-30 16:13:49JavaScript

使用<link rel="preload">实现资源预加载

通过HTML的<link>标签直接声明需要预加载的资源,浏览器会在页面加载早期阶段优先获取这些资源。适合预加载关键CSS、字体、脚本等静态资源。

<link rel="preload" href="critical.css" as="style">
<link rel="preload" href="font.woff2" as="font" crossorigin>

通过JavaScript动态创建预加载标签

利用DOM API动态生成<link><script>标签,实现更灵活的预加载逻辑。可监听资源加载状态。

const preloadResource = (url, as) => {
  const link = document.createElement('link');
  link.rel = 'preload';
  link.href = url;
  link.as = as;
  document.head.appendChild(link);
};
preloadResource('hero-image.webp', 'image');

使用fetch()实现数据预请求

对动态数据或API结果进行预获取,利用fetch()cache控制缓存行为。适合SPA应用的路由级数据预加载。

// 预请求并缓存数据
fetch('/api/data', { cache: 'force-cache' })
  .then(response => response.json())
  .then(data => window.preloadedData = data);

图片预加载技术

通过Image对象提前加载图片资源,避免页面渲染时的延迟。可结合Promise实现批量预加载。

const preloadImages = (urls) => {
  return Promise.all(
    urls.map(url => new Promise((resolve) => {
      const img = new Image();
      img.src = url;
      img.onload = resolve;
    }))
  );
};
preloadImages(['img1.jpg', 'img2.jpg']);

监听load事件触发二级预加载

在页面主资源加载完成后,通过window.onload触发非关键资源的延迟预加载,避免阻塞首屏渲染。

window.addEventListener('load', () => {
  // 预加载非首屏需要的资源
  preloadResource('lazy-module.js', 'script');
});

使用Intersection Observer实现可视区预加载

对即将进入视口的元素进行资源预加载,适用于懒加载内容的优化。

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      preloadResource(entry.dataset.src, 'image');
      observer.unobserve(entry.target);
    }
  });
});
document.querySelectorAll('[data-src]').forEach(el => observer.observe(el));

Service Worker缓存预加载

通过Service Worker在后台预取并缓存资源,实现离线可用性或二次访问加速。

js 实现预加载效果

// Service Worker脚本中
self.addEventListener('install', (event) => {
  event.waitUntil(
    caches.open('precache').then(cache => 
      cache.addAll(['/styles.css', '/app.js'])
    )
  );
});

标签: 加载效果
分享给朋友:

相关文章

vue实现加载

vue实现加载

Vue 实现加载功能的方法 使用 v-if 或 v-show 控制加载状态 在模板中通过 v-if 或 v-show 控制加载动画的显示与隐藏。v-if 会完全移除 DOM 元素,而 v-show 仅…

jquery 效果

jquery 效果

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。jQuery 提供了丰富的效果(Effects)功能,可以轻松实现元素的动态显…

vue效果实现

vue效果实现

Vue 效果实现方法 Vue.js 提供了多种方式实现动态效果,包括过渡动画、状态驱动的 UI 变化以及第三方动画库集成。以下是常见效果的实现方案: 过渡动画 使用 Vue 内置的 <tran…

react如何加载网页

react如何加载网页

使用 React 加载网页的方法 通过 iframe 嵌入网页 在 React 组件中,可以通过 iframe 标签直接加载外部网页。这种方式简单直接,适合嵌入第三方页面或静态内容。 import…

vue实现触底加载

vue实现触底加载

触底加载的实现方法 在Vue中实现触底加载功能,可以通过监听滚动事件或使用Intersection Observer API来实现。以下是两种常见的方法: 监听滚动事件 在组件中监听滚动事件,计算…

js实现图片加载

js实现图片加载

使用Image对象加载图片 通过JavaScript的Image对象可以动态加载图片,适用于需要预加载或动态插入图片的场景。 const img = new Image(); img.src =…