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

nwwlzxa7  于 2023-04-09  发布在  Bootstrap
关注(0)|答案(5)|浏览(204)

我已经使用NPM将Bootstrap图标安装到Laravel/VueJS应用程序中,按照这里的说明,https://icons.getbootstrap.com/。下一步是什么?
如果我想在刀片模板中使用svg元素,我需要用webpack编译它吗?我需要将它导入到css文件中吗?
如何在单个文件VueJS组件中使用它?

dy2hfwbg

dy2hfwbg1#

我能够安装引导图标版本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>

编码快乐!!!

ktecyv1j

ktecyv1j2#

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图标)。

@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/**中找到反馈窗口

dw1jzc5e

dw1jzc5e3#

使用npm包在Node.js支持的应用程序中安装Bootstrap:
Copy npm install bootstrap require('bootstrap')会将Bootstrap的所有jQuery插件加载到jQuery对象上。
然后使用npm install bootstrap-icons将bootstrap图标安装到项目中,并将其包含在node-modules的app.js中。
之后,如果npm run dev运行成功,则在Vue组件中添加SVG元素。

<svg class="bi bi-chevron-right" width="32" height="32" 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文件中吗?
答:不需要,只要导入所有的引导文件,如js文件和css文件,在blade中使用时就不需要编译。

cx6n0qe3

cx6n0qe34#

对我来说,这个问题是固定的,在sass指令的webpack中删除:

.options({ processCssUrls: false })

不需要声明字体。

mw3dktmi

mw3dktmi5#

我找到答案了:)
您可以安装vite-plugin-static-copy

npm i -D vite-plugin-static-copy

更新vite.config.js中的代码

import { viteStaticCopy } from 'vite-plugin-static-copy'
...

plugins: [
        laravel({
            input: [
                'resources/sass/app.scss',
                'resources/js/app.js',
            ],
            refresh: true,
        }),
        viteStaticCopy({ // <-- Add
            targets: [
                { //For build
                    src: 'node_modules/bootstrap-icons/font/fonts/*',
                    dest: 'assets/fonts'
                },
                { // For Dev
                    src: 'node_modules/bootstrap-icons/font/fonts/*',
                    dest: 'resources/sass/fonts'
                }
            ]
        })
    ],

然后你可以运行npm build或者dev。

npm run dev
npm run build

相关问题