知识分类
后端
前端
设计
开源组件/产品
APP
其他
广告招募

JS里如何动态加载其它JS并保持依赖关系

管理员
发布于:2026-02-10 22:10:57
导读:动态加载JS

JS里如何动态加载其它JS并保持依赖关系?直接上代码:

/** * 动态加载JS文件(支持顺序加载和依赖管理) * @param {Array} scripts - JS文件配置数组,每个元素包含url和deps属性 * @param {Function} callback - 所有文件加载完成后的回调函数 */ function loadScriptsWithDependencies(scripts, callback) { const loaded = new Set(); const loading = new Set(); let completed = 0; function canLoad(script) { // 检查依赖是否都已加载 if (!script.deps || script.deps.length === 0) { return true; } return script.deps.every(dep => loaded.has(dep)); } function loadScript(scriptConfig) { if (loaded.has(scriptConfig.url) || loading.has(scriptConfig.url)) { return; } if (!canLoad(scriptConfig)) { return; } loading.add(scriptConfig.url); const script = document.createElement('script'); script.type = 'text/javascript'; script.src = scriptConfig.url; script.onload = function () { loading.delete(scriptConfig.url); loaded.add(scriptConfig.url); completed++; checkAllLoaded(); }; script.onerror = function () { loading.delete(scriptConfig.url); completed++; checkAllLoaded(); }; document.head.appendChild(script); } function checkAllLoaded() { if (completed >= scripts.length) { if (typeof callback === 'function') { callback(); } return; } // 尝试加载所有未加载且满足依赖条件的脚本 scripts.forEach(script => { loadScript(script); }); } // 初始化加载 scripts.forEach(script => { loadScript(script); }); }

调用方法

// 加载顺序:jquery.js → bootstrap.js → custom.js loadScriptsWithDependencies([ { url: '/js/jquery.js', deps: [] }, { url: '/js/bootstrap.js', deps: ['/js/jquery.js'] }, { url: '/js/custom.js', deps: ['/js/bootstrap.js'] } ], function() { console.log('所有脚本加载完成,可以开始使用了!'); });
关键词: 动态加载JS
上一篇:没有了
下一篇:EventSource: JS实时通信与WebSocket的区别
搜索内容
最新文章
  • JS里如何动态加载其它JS并保持依赖
  • EventSource: JS实时通
  • Windows系统安装Telnet工
  • mkcert生成本地受信任的 SSL
  • 推荐:微软站点统计工具Clarity
  • 免费的素材网有哪些?
  • 什么是产品的 SKU
  • 常用的作图AI大模型及对比
  • SEO和SEM的区别
  • VS Code 与 Trae 编辑器
精彩文章
  • 1 MSYS2中安装使用GCC的正确方法
  • 2 Layui 怎么样更换主题颜色?
  • 3 OBS在银河麒麟或ubuntu等核心
  • 4 vscode用一个插件快速生成Vue
  • 5 3步教你如何修改uniapp but
  • 6 连接WIFI出现无Internet
  • 7 常见主板开机进入bios热键,一张图
  • 8 uniapp 中处理rich-tex
  • 9 JavaScript 判断对象是否为
  • 10 FrameCoder非可,基于web
工信部备案:苏ICP备2023011827号-1
苏公网安备 32111202000338号