当前位置:首页 > 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实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

jquery 加载

jquery 加载

jQuery 加载方法 使用jQuery需要先将其库文件加载到网页中。以下是几种常见的加载方式: 通过CDN加载 推荐使用官方或公共CDN(内容分发网络)加载jQuery,速度快且可能被浏览器缓存:…

vue 实现异步加载

vue 实现异步加载

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

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…