如何通过 VueJS 在 Laravel 中使用 Bootstrap 4 图标

Posted

技术标签:

【中文标题】如何通过 VueJS 在 Laravel 中使用 Bootstrap 4 图标【英文标题】:How to use Bootstrap 4 icons in Laravel with VueJS 【发布时间】:2020-06-18 22:54:47 【问题描述】:

我已经使用 NPM 将 Bootstrap 图标安装到 Laravel/VueJS 应用程序中,根据此处的说明,https://icons.getbootstrap.com/。下一步是什么?

如果我想在刀片模板中使用 svg 元素,我需要用 webpack 编译它吗?我是否将其导入到 css 文件中?

以及如何在单个文件的 VueJS 组件中使用它?

【问题讨论】:

我建议使用 BoostrapVue 然后你可以使用图标作为组件:bootstrap-vue.js.org/docs/icons 【参考方案1】:

我可以按照以下步骤将引导图标版本 1.5.0 安装到 Laravel 8 项目并使用 laravel mix。

运行此命令将引导图标安装到您的项目中

npm i bootstrap-icons

将此添加到 resources\sass\app.scss

@import '~bootstrap-icons/font/bootstrap-icons';

检查 webpack.mix.js 文件有这个

mix.sass('resources/sass/app.scss', 'public/css')

运行它来编译你对公共文件夹的更改

npm run dev

然后您可以在页面的任何位置使用图标(.blade 或 .vue 文件)

<i class="bi-alarm"></i>

编码愉快!!!

【讨论】:

【参考方案2】:

mili的回答有错误,因为如果

@import '~bootstrap-icons/font/bootstrap-icons';

包含在 resources\sass\app.scss 中,然后在使用 npm run dev 构建时,我的 app.css 文件中不包含 @font-face 指令。为了使指令出现,我必须添加 «css» 扩展名,以便正确的 @import 是:

@import '~bootstrap-icons/font/bootstrap-icons.css';

但是还有另一个问题,在这种情况下是构建器的问题,导致浏览器不显示图标(而是出现一个正方形,表示浏览器无法呈现 svg 图标)。构建器在 public/css/app.css

中生成以下指令
    @font-face 
  font-family: "bootstrap-icons";
  src: url(/fonts/vendor/bootstrap-icons/bootstrap-icons.woff2?dfd0ea122577eb61795f175e0347fa2c) format("woff2"),
url(/fonts/vendor/bootstrap-icons/bootstrap-icons.woff?94eeade15e6b7fbed35b18ff32f0c112) format("woff");

Laravel 找不到文件,因为 url() 不理解绝对路径(在我的开发环境中)。如果在两条路径之前添加«..»,则一切正常(图标出现在页面中):

    @font-face 
  font-family: "bootstrap-icons";
  src: url(../fonts/vendor/bootstrap-icons/bootstrap-icons.woff2?dfd0ea122577eb61795f175e0347fa2c) format("woff2"),
url(../fonts/vendor/bootstrap-icons/bootstrap-icons.woff?94eeade15e6b7fbed35b18ff32f0c112) format("woff");

问题是每次您为任何其他包运行npm run dev 时,“..”都会自动被覆盖,因此不再显示图标。

我看到其他人有同样的问题,但我不知道应该在哪里通知问题和解决方案。我会尝试在 https://getbootstrap.com/

中找到反馈窗口

【讨论】:

【参考方案3】:

使用 npm 包在 Node.js 驱动的应用中安装 Bootstrap:

复制npm install bootstrap require('bootstrap') 会将所有 Bootstrap 的 jQuery 插件加载到 jQuery 对象上。

之后,使用npm install bootstrap-icons 将引导图标安装到您的项目中,并将其从节点模块包含在您的 app.js 中。

之后,如果 npm run dev 运行成功,则在你的 Vue 组件中添加 SVG 元素。

<svg class="bi bi-chevron-right"   viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6.646 3.646a.5.5 0 01.708 0l6 6a.5.5 0 010 .708l-6 6a.5.5 0 01-.708-.708L12.293 10 6.646 4.354a.5.5 0 010-.708z" clip-rule="evenodd"/></svg>

用于演示目的

Q> 如果我想在刀片模板中使用 svg 元素,我需要用 webpack 编译它吗?我是否将其导入到 css 文件中?

Ans.> 不,在blade中使用时不需要编译,只要你导入所有的引导文件,如js文件和css文件。

【讨论】:

【参考方案4】:

对我来说,问题已在 webpack 中通过 sass 指令解决:

.options( processCssUrls: false )

无需声明字体。

【讨论】:

以上是关于如何通过 VueJS 在 Laravel 中使用 Bootstrap 4 图标的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Laravel 在 VueJS 中赋值?

Laravel如何导入通过NPM安装的vuejs包

如何在 Laravel Blade 中使用 Vuejs

如何使用 vuejs 在 laravel 刀片中显示验证错误

如何在 vuejs 指令中使用 Laravel Blade 语法?

使用 laravel 后端 api 在 vuejs 中搜索