当前位置: 首页 > news >正文

JavaScript 实现模块懒加载的几种方式

JavaScript模块懒加载通过延迟加载非关键资源提升页面性能,以下是主流实现方式:

一、原生动态导入(推荐方案)

通过ES2020的import()函数实现异步加载,返回Promise对象:

javascript

button.addEventListener('click', async () => { const module = await import('./module.js'); // 动态加载模块 module.doSomething(); // 执行模块方法 });

▲ 特性:

  • 浏览器原生支持,无需额外库。
  • 自动代码分割(code splitting)。
  • 与Webpack/Rollup等构建工具无缝集成。

二、传统模块加载方案

1. Webpack特定语法

javascript

require.ensure([], () => { const module = require('./module'); module.doSomething(); }, 'chunk-name'); // 命名代码块

▲ 适用场景:

  • 兼容旧版Webpack项目。
  • 需显式控制代码块命名。
2. 动态Script注入

原生JS实现的通用方案:

javascript

function loadModule(src) { return new Promise((resolve) => { const script = document.createElement('script'); script.src = src; script.onload = resolve; document.head.appendChild(script); }); } // 使用示例 loadModule('module.js').then(() => { // 模块加载完成后执行 });

▲ 优势:

  • 兼容所有浏览器环境。
  • 支持非模块化脚本加载。

三、进阶优化策略

  1. 交互驱动加载
    结合用户行为(点击/滚动)触发模块加载,减少初始负载。
  2. 预加载提示
    使用<link rel="preload">声明重要模块优先级。
  3. 缓存策略
    通过Service Worker缓存已加载模块,提升二次访问速度。

优先采用原生import()方案,旧项目可渐进式迁移至动态导入。对于图片/视频等资源懒加载,推荐使用IntersectionObserver API实现。

http://www.lryc.cn/news/618457.html

相关文章:

  • Flink Redis维表:Broadcast Join与Lookup Join对比及SQL示例
  • nvm install 14.21.3 时npm 无法下载和识别
  • code-inspector-plugin插件
  • npm、pnpm、yarn区别
  • 【Linux系统】详解Ext2,文件系统
  • RabbitMQ-知识技能图谱(总结篇)
  • 智能家居Agent:物联网设备的统一控制与管理
  • 算法打卡力扣第88题:合并两个有序数组(easy)
  • 第五章 树与二叉树
  • 虚拟机高级玩法-网页也能运行虚拟机——WebAssembly
  • Day24|学习前端CSS
  • AI入门学习--AI模型评测
  • Java集合学习之forEach()遍历方法的底层原理
  • 深度解读 WizTelemetry 2.0:链路追踪如何让分布式系统“无所遁形”
  • 【2025最新版】Java基础知识学习路线图:从入门到精通的系统化指南
  • 深度贴:前端网络基础及进阶(2)
  • 【网络运维】Linux和自动化: Ansible基础实践
  • 【接口自动化】-11-接口加密签名 全局设置封装
  • 回归预测 | Matlab实现CNN-BiLSTM-self-Attention多变量回归预测
  • 如何使用gpt进行模型微调?
  • iceberg FlinkSQL 特性
  • 古风修仙主题登录页面设计与实现 附源码 ~~~
  • Iptables 详细使用指南
  • 【CSS3】录音中。。。
  • 飞算JavaAI 2.0.0深度测评:自然语言编程如何重塑Java开发范式
  • 基于 gRPC 的接口设计、性能优化与生产实践
  • 《软件工程导论》实验报告一 软件工程文档
  • 新手向:Python编写简易翻译工具
  • Jmeter性能测试过程中遇到connection reset的解决方案
  • 易语言模拟真人鼠标轨迹算法 - 非贝塞尔曲线