bootstrap 是前端 css/js 框架,非 php 或 laravel 组成部分;laravel 9+ 弃用 laravel/ui,应手动通过 vite 集成 bootstrap 5.3+,注意 popper 版本兼容性及 js 初始化时机。

Bootstrap 本身不是 PHP 框架,也不是 Laravel 的一部分——它是前端 CSS/JS 框架,和 Laravel(PHP 后端框架)属于不同层级。强行把它叫作“Bootstrap PHP 框架”会误导技术选型和问题排查方向。
为什么 laravel/ui 不再是首选安装方式
Laravel 9+ 已弃用 laravel/ui,官方转向 Vite + 原生 ESM 构建流程。继续用 php artisan ui bootstrap 会报错或生成不兼容的脚本结构。
-
laravel/ui最后支持版本是 Laravel 8,Laravel 9 起它不再维护 - 它默认注入的是 Bootstrap 4 或 5.1 旧版 JS(依赖 jQuery),而现代 Bootstrap 5.3+ 已完全移除 jQuery 依赖
- 生成的 Webpack 配置与 Laravel 默认的 Vite 冲突,容易导致
bootstrap.bundle.js加载失败或Modal等组件无法初始化
在 Laravel 10/11 中正确引入 Bootstrap 5.3
核心是绕过 laravel/ui,手动对接 Vite 和 Bootstrap 的 ESM 输出。
- 执行
npm install bootstrap @popperjs/core(@popperjs/core是 Bootstrap 5.3+ 必需的依赖) - 在
resources/js/app.js顶部添加:import 'bootstrap/dist/css/bootstrap.min.css';<br>import * as bootstrap from 'bootstrap';<br>window.bootstrap = bootstrap;
- 确保
vite.config.js中已配置别名(如~bootstrap),否则@import "~bootstrap/scss/functions";会报 module not found - 若需自定义 SCSS,把
resources/sass/app.scss改为@use "bootstrap" as bs;方式导入,避免全局污染
常见错误:CSS 生效但 JS 组件无响应
典型现象是按钮点击没反应、Dropdown 不展开、Toast 不自动关闭——这几乎全是 JS 初始化问题,不是样式问题。
- 没在 JS 中显式实例化:比如
new bootstrap.Modal(document.getElementById('xxx')),不能只靠data-bs-toggle属性(Vite 环境下属性驱动常失效) - DOM 元素尚未挂载就执行 JS:把初始化逻辑包在
document.addEventListener('DOMContentLoaded', ...)或 Vue 组件的onMounted中 - Popper 版本不匹配:
@popperjs/core@2.11.8是 Bootstrap 5.3.x 唯一验证兼容的版本,升到@2.12+会导致Tooltip定位偏移甚至报错Cannot read properties of undefined (reading 'getBoundingClientRect')
真正麻烦的从来不是装上 Bootstrap,而是后续定制时发现:你改了 $primary 变量,但表单控件的 focus outline 颜色还卡在旧值;或者 modal backdrop 透明度在 Safari 下异常——这些细节不会写在任何“快速开始”文档里,得翻 Bootstrap 的源码 SCSS 文件逐层查依赖链。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











