为什么Bootstrap 5移除了对jQuery的依赖

小浩同学_2213

小浩同学_2213

2026-04-07

927人浏览

原创

bootstrap 5 彻底移除 jquery 依赖,基于原生 api 实现组件;必须使用 bootstrap.bundle.min.js 并将 data-toggle 等属性升级为 data-bs-toggle,否则功能静默失效。

为什么bootstrap 5移除了对jquery的依赖

Bootstrap 5 不再需要 jQuery 是事实,不是可选项

Bootstrap 5 确实彻底移除了对 jQuery 的依赖——这不是“兼容旧代码的过渡策略”,而是底层重写的必然结果。所有 JS 组件(ModalTooltipDropdown 等)现在都基于原生 DOM API 和 EventCustomEventPromise 等现代浏览器能力实现。

这意味着:你引入 jquery-3.6.3.min.js 不会报错,但也不会被 Bootstrap 5 的任何代码调用;它只是白占内存、多发一次 HTTP 请求、增加首屏解析时间。

  • 移除 jQuery 后,bootstrap.bundle.min.js 体积比 v4 小约 12 KB(gzip 后),加载更快
  • 不再受 jQuery 版本冲突影响(比如你项目里用了 jQuery 1.x3.x 插件,和 Bootstrap 4 混用时容易出 Uncaught TypeError: $ is not a function
  • IE 11 及更老浏览器直接不支持 Bootstrap 5,这是移除 jQuery 的前提条件之一——没有它兜底,就得靠浏览器原生能力,而 IE 11 缺失太多

data-bs-toggle 这类属性名变更是依赖解耦的副作用

因为不再走 jQuery 的事件代理和选择器引擎,Bootstrap 5 必须用更明确、更少歧义的方式绑定行为。所以所有 data 属性前缀从 data-toggle 统一升级为 data-bs-toggledata-targetdata-bs-targetdata-dismissdata-bs-dismiss

这不是“为了改而改”,而是避免和其他 JS 库或自定义脚本发生属性名冲突。例如,某个轮播图插件也用 data-toggle="carousel",v4 下可能被 jQuery 误触发;v5 用 data-bs-toggle,就完全隔离了。

  • 如果你复制的是 Bootstrap 4 文档里的 HTML 示例,直接粘贴到 v5 页面中,Modal 就不会弹出——控制台无报错,但点击无效
  • 检查元素时能看到 data-toggle="modal",但 Bootstrap 5 的 JS 根本不监听这个属性,只认 data-bs-toggle
  • 迁移时建议全局搜索替换:data-toggledata-bs-toggledata-targetdata-bs-target,别漏掉 data-dismissdata-trigger

bootstrap is not defined 错误,90% 是脚本加载顺序或时机问题

Uncaught ReferenceError: bootstrap is not defined 这个错误在 Modal、Tooltip 初始化时高频出现,根本原因不是没引文件,而是 JS 执行得太早。

Bootstrap
Bootstrap

Bootstrap 5.3.8 编译版包含可直接用于项目的 CSS、JavaScript 和插件文件,适合快速搭建响应式网页。

下载

Bootstrap 5 的 JS 组件必须等 bootstrap.bundle.min.js 加载并执行完毕后,才能访问全局 bootstrap 对象。如果初始化代码写在 里,或没包在 DOMContentLoaded 里,就会失败。

  • ✅ 正确做法:把 <script src="...bootstrap.bundle.min.js"></script> 放在 前,并确保所有初始化逻辑都在它之后
  • ❌ 错误写法:<script>new bootstrap.Modal(...)</script> —— 此时 bootstrap 还没挂到全局
  • ⚠️ 注意:用 asyncdefer 加载 bootstrap.bundle.min.js 时,必须同步控制初始化脚本的执行时机,否则仍可能报错

Popper 不再需要单独引入,但 bundle 版本必须用对

Bootstrap 5 把 Popper.js 打包进了 bootstrap.bundle.min.js,所以你不需要再额外引入 @popperjs/core。但这也意味着:你必须用 .bundle. 版本,不能只引 bootstrap.min.js

只引 bootstrap.min.js 的后果是——DropdownTooltipPopover 全部失效,控制台报 TypeError: Popper is not a constructor,因为这些组件内部调用 Popper.createPopper(),而精简版 JS 文件里压根没打包它。

  • CDN 正确链接是:https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js
  • npm 安装后正确路径是:node_modules/bootstrap/dist/js/bootstrap.bundle.min.js
  • 如果你用构建工具(Vite/Webpack),import 时也要指向 bootstrap/dist/js/bootstrap.bundle.js,不是 bootstrap/js/dist/modal.js 这类源码路径

事情说清了就结束。最常被忽略的其实是「bundle 版本」和「data-bs- 前缀」这两点——它们不出错,但让功能静默失效,查起来反而更费时间。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

bootstrap

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2023

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4323

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5430

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

4878

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

683

5

js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

4066

5

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

2023.07.04

1049

3

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

2023.07.04

3964

6

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

820

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap5 入门教程
Bootstrap5 入门教程

共0课时 | 0人学习

Bootstrap Components 组件文档
Bootstrap Components 组件文档

共0课时 | 0人学习

Bootstrap Grid 栅格系统
Bootstrap Grid 栅格系统

共0课时 | 0人学习