You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel9+Vite.js环境下Blade文件实现Bootstrap提示框的方式是否正确?

Laravel 9 + Vite.js 环境下启用Bootstrap Tooltip和Popover的方案验证

你的方案是可行的,能正常实现Tooltip和Popover的功能,不过可以做一些优化让代码更贴合Laravel+Vite的开发规范:

核心步骤的正确性确认

  1. 内联脚本声明type="module":
    这个是必要操作,因为Vite默认输出ES模块,只有声明了type="module"的内联脚本,才能访问到你挂载到window上的$和bootstrap对象,你的写法没问题。

  2. resources/js/bootstrap.js的配置:
    通过import引入jQuery和Bootstrap,再挂载到window全局对象的写法完全正确,这样全局环境就能调用$和bootstrap相关API。

  3. Blade中Tooltip初始化代码:
    逻辑完全正确,能批量初始化页面上所有带data-bs-toggle="tooltip"的元素。可以简化成更简洁的ES6写法:

    <script type="module">
      $(function () {
        document.querySelectorAll('[data-bs-toggle="tooltip"]')
          .forEach(el => new bootstrap.Tooltip(el));
      });
    </script>
    

    如果要同时启用Popover,只需要扩展选择器并初始化:

    <script type="module">
      $(function () {
        // 初始化Tooltip
        document.querySelectorAll('[data-bs-toggle="tooltip"]')
          .forEach(el => new bootstrap.Tooltip(el));
        // 初始化Popover
        document.querySelectorAll('[data-bs-toggle="popover"]')
          .forEach(el => new bootstrap.Popover(el));
      });
    </script>
    

更规范的优化方案(推荐)

建议把初始化逻辑放到JS模块中,而非内联在Blade文件里,符合模块化开发思路:

  1. 在resources/js/app.js中添加初始化代码:
    import './bootstrap';
    
    $(function () {
      // 全局初始化Tooltip
      document.querySelectorAll('[data-bs-toggle="tooltip"]')
        .forEach(el => new bootstrap.Tooltip(el));
      // 全局初始化Popover
      document.querySelectorAll('[data-bs-toggle="popover"]')
        .forEach(el => new bootstrap.Popover(el));
    });
    
  2. 在Blade模板中只需要通过Vite指令引入打包后的脚本即可:
    @vite(['resources/js/app.js'])
    
    这种方式下不需要再写单独的内联type="module"脚本,因为@vite生成的脚本已经是模块类型。

内容的提问来源于stack exchange,提问作者Francis Pocket Lacerte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:46:08