透過超過 100 則提示學習 Nuxt!

nuxt-fontawesome
@vesp/nuxt-fontawesome

在您的 Nuxt 專案中使用 Font Awesome 6 圖示的模組

在您的 Nuxt 3 專案中使用 Font Awesome 6 圖示的模組。

此模組未使用底層的 vue-fontawesome 作為依賴項,但包含來自其原始碼的一些程式碼,以使用 Nuxt Universal Render(也稱為組態中的 ssr: true)實作其功能。

與官方元件的主要區別在於在 template 中建立真實標籤,而不是在瀏覽器中渲染節點。這就是它在伺服器端運作的原因。

我嘗試實作盡可能多的功能(例如 masktransformsymbol),但不確定所有功能是否與 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

布林值,指示是否應全域註冊圖層元件。元件名稱預設為 ${options.component}-layers<font-awesome-layers ... />

useLayersText

  • 預設值:true

布林值,指示是否應全域註冊圖層元件。元件名稱預設為 ${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 附加到圖示元件名稱。此選項存在的原因是元件名稱選項也用於圖層元件,您可能不希望將 '-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 選項變更這些名稱。

  // 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 的套件

  1. 在 FontAwesome 上擷取您的套件 IDhttps://fontawesome.com/kits/**KIT_ID**/package(10 個字母數字字元)
  2. 設定標籤中,如果尚未完成,請啟用啟用將您的套件安裝為套件選項
  3. 在您的本機專案中,安裝您的自訂套件套件,如套件標籤中所定義
  4. 透過在 kitIdentifier 鍵下新增您的套件 ID,以及在 proIcons.kit 鍵下新增專案中需要的圖示,來更新 nuxt.config.ts
    // https://nuxt.dev.org.tw/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)
                ],
            },
        }
    })
    
  5. 像這樣在您的頁面中使用您匯入的圖示
    <font-awesome :icon="['fak', 'solid-user-circle-exclamation']" />
    

授權條款

MIT 授權條款

此模組的靈感來自 Nuxt Community 的官方 Nuxt 2 模組

一些程式碼和功能取自 vue-fontawesome 儲存庫,以使用伺服器端渲染實作其功能。