当前位置:首页 > JavaScript

js实现加载

2026-03-13 23:17:35JavaScript

实现 JavaScript 加载的几种方法

动态加载脚本
通过创建 script 元素动态插入到 DOM 中,适用于按需加载第三方库或模块:

const script = document.createElement('script');
script.src = 'https://example.com/library.js';
script.async = true; // 异步加载
document.head.appendChild(script);

使用 defer 属性
在 HTML 中声明脚本时添加 defer,确保脚本在 DOM 解析完成后按顺序执行:

<script src="script.js" defer></script>

模块化加载(ES Modules)
通过 import 语法实现模块化加载,需在 script 标签中声明 type="module"

js实现加载

// module.js
export function init() { console.log('Loaded'); }

// main.js
import { init } from './module.js';
init();

监听加载事件
为脚本添加 onloadonerror 回调处理加载状态:

script.onload = () => console.log('Script loaded');
script.onerror = () => console.error('Load failed');

使用 Promise 封装加载逻辑
封装动态加载为可链式调用的 Promise:

js实现加载

function loadScript(url) {
  return new Promise((resolve, reject) => {
    const script = document.createElement('script');
    script.src = url;
    script.onload = resolve;
    script.onerror = reject;
    document.head.appendChild(script);
  });
}

loadScript('bundle.js').then(() => console.log('Done'));

性能优化建议

预加载关键资源
通过 <link rel="preload"> 提前加载高优先级资源:

<link rel="preload" href="critical.js" as="script">

代码分割(Code Splitting)
配合打包工具(如 Webpack)分割代码块,实现按需加载:

// 动态导入返回 Promise
import('./module.js').then(module => {
  module.run();
});

懒加载非关键资源
对图片、非核心脚本等使用 Intersection Observer API 实现视窗内加载:

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      entry.target.src = entry.target.dataset.src;
      observer.unobserve(entry.target);
    }
  });
});

document.querySelectorAll('img.lazy').forEach(img => {
  observer.observe(img);
});

标签: 加载js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

vue加载动画实现

vue加载动画实现

Vue 加载动画实现方法 使用 CSS 动画或过渡 在 Vue 组件中可以直接通过 CSS 实现加载动画效果。定义一个简单的旋转动画: .loading-spinner { width: 40p…

vue 实现异步加载

vue 实现异步加载

Vue 异步加载的实现方法 动态导入组件(懒加载) 使用 import() 语法动态导入组件,Vue 会将其转换为异步加载的组件。适用于路由或组件按需加载。 const AsyncComponent…

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const relo…