在您的 Nuxt 3 项目中使用 Font Awesome 6 图标的模块。
此模块不使用 vue-fontawesome 作为底层依赖,但包含来自其源代码的一些代码,以使用 Nuxt 通用渲染(也称为配置中的 ssr: true
)来实现其功能。
与官方组件的主要区别在于在 template
中创建真实标签,而不是在浏览器中渲染节点。这就是它在服务器上工作的原因。
我尝试实现了尽可能多的功能(如 mask
、transform
和 symbol
),但不确定一切是否与 vue-fontawesome
中的工作方式相同。
请使用 issues 报告问题。
设置
- 将依赖项添加到您的项目
npx nuxi@latest module add @vesp/nuxt-fontawesome
- 添加一些图标包
npm i -D @fortawesome/free-solid-svg-icons @fortawesome/free-regular-svg-icons @fortawesome/free-brands-svg-icons
- 将
@vesp/nuxt-fontawesome
添加到您的nuxt.config.ts
中的modules
- 配置加载的图标
使用 fontawesome
键
// nuxt.config.ts
modules: [
'@vesp/nuxt-fontawesome',
],
fontawesome: {
icons: {
solid: ['cog', ...],
...
}
}
}
模块选项
component
- 默认值:
font-awesome
默认组件名称为 <font-awesome icon="" ... />
,您可以在此处更改它。例如,如果您指定 fa
,它将变为 <fa icon="" ... />
。另请参阅 suffix。
useLayers
- 默认值:
true
布尔值,指示是否应全局注册 layers 组件。组件名称将为 ${options.component}-layers
,默认为 <font-awesome-layers ... />
。
useLayersText
- 默认值:
true
布尔值,指示是否应全局注册 layers 组件。组件名称将为 ${options.component}-layers-text
,默认为 <font-awesome-layers-text ... />
。
icons
您将使用的图标。FontAwesome 当前 支持 3 个系列中的最多 5 种图标样式。
此选项是一个对象,其中样式名称作为属性,以及一个包含您希望使用的这些样式的所有图标名称的数组
icons: {
solid: ['coffee', 'child', ... ],
regular: ['comment', ... ],
brands: ['twitter', ... ],
},
proIcons: {
solid: [],
regular: [],
light: [],
thin: [],
duotone: [],
},
sharpIcons: {
solid: [],
regular: [],
light: [],
thin: [],
}
addCss
- 默认值:
true
如果模块应自动将 fontawesome 样式添加到全局 css 配置。它通过将 @fortawesome/fontawesome-svg-core/styles.css
取消移位到 Nuxt css
属性上来实现。
suffix
- 默认值:
true
布尔值,指示是否将 -icon
附加到图标组件名称。此选项的存在是因为组件名称选项也用于 layer 组件,您可能不希望将“-icon”添加到这些组件。
// config
component: 'fa',
suffix: true
// usage
<fa-icon />
<fa-layers />
<fa-layers-text />
// config
component: 'fa',
suffix: false
// usage
<fa />
<fa-layers />
<fa-layers-text />
用法
您可以在 playground 文件夹下找到更多详细信息。
- 确保您已安装图标包
npm i -D @fortawesome/free-solid-svg-icons
- 并将模块配置添加到您的
nuxt.config.js
默认组件名称为
<font-awesome>
<font-awesome-layers>
<font-awesome-layers-text>
您可以通过 component option 更改此名称。
// nuxt.config
fontawesome: {
icons: {
solid: ['dollar-sign', 'cog', 'circle', 'check', 'calendar'],
regular: ['user']
}
}
- 使用全局图标
<template>
<div>
<font-awesome :icon="['far', 'user']" />
<font-awesome icon="dollar-sign" style="font-size: 30px" />
<font-awesome icon="cog" />
<font-awesome-layers class="fa-4x">
<font-awesome icon="circle" />
<font-awesome icon="check" transform="shrink-6" :style="{color: 'white'}" />
</font-awesome-layers>
<font-awesome-layers full-width class="fa-4x">
<font-awesome icon="calendar" />
<font-awesome-layers-text transform="shrink-8 down-3" value="27" class="fa-inverse" />
</font-awesome-layers>
</div>
</template>
<script></script>
- 使用本地导入的图标
<template>
<div>
<font-awesome-layers full-width size="4x">
<font-awesome :icon="faCircle" />
<font-awesome-layers-text transform="shrink-12" value="GALSD" class="fa-inverse" />
</font-awesome-layers>
<font-awesome :icon="faAddressBook" />
<font-awesome :icon="faGithub" />
</div>
</template>
<script setup>
import {faCircle, faAddressBook} from '@fortawesome/free-solid-svg-icons'
import {faGithub} from '@fortawesome/free-brands-svg-icons'
</script>
FontAwesome Kit
您可以使用 来自 Fontawesome Pro 的 kits。
- 在 FontAwesome 上检索您的 kit ID:
https://fontawesome.com/kits/**KIT_ID**/package
(10 个字母数字字符) - 在设置选项卡中,激活启用将您的 Kit 作为软件包安装选项(如果尚未完成)
- 在您的本地项目中,安装您的自定义 kit 软件包,如软件包选项卡中所定义
- 更新
nuxt.config.ts
,通过在kitIdentifier
键下添加您的 kit ID,并在proIcons.kit
键下添加项目中需要的图标// https://nuxtjs.org.cn/docs/api/configuration/nuxt-config export default defineNuxtConfig({ compatibilityDate: '2024-11-01', devtools: { enabled: true }, modules: [ '@vesp/nuxt-fontawesome' ], fontawesome: { kitIdentifier: (KIT_ID), proIcons: { kit: [ (ICON_NAME ex: solid-user-circle-exclamation) ], }, } })
- 像这样在您的页面中使用您导入的图标
<font-awesome :icon="['fak', 'solid-user-circle-exclamation']" />
许可证
此模块的灵感来自 Nuxt Community 的官方 Nuxt 2 模块。
一些代码和函数取自 vue-fontawesome 存储库,以使用服务器渲染实现其功能。