【Vue開發】在Vite+Vue3項目中實現離線Iconify圖標方案

在Vite+Vue3項目中實現離線Iconify圖標方案

項目背景

當前項目需要部署到無網絡連接的離線環境,因此需要將Iconify圖標集打包到項目構建結果中,實現完全離線使用。

技術環境

  • 框架: Vue 3
  • 構建工具: Vite
  • 核心依賴:
    "@iconify/json": "^2.2.228",    // 提供完整的圖標集合
    "@iconify/vue": "^4.1.1",       // Vue圖標組件
    "@tomjs/vite-plugin-iconify": "^1.2.1"  // Vite插件,用于打包圖標
    

實現步驟

1. Vite配置

vite.config.ts中進行配置,將圖標集打包到最終產物中:

import { defineConfig } from 'vite'
import iconify from '@tomjs/vite-plugin-iconify'export default defineConfig({plugins: [iconify({ local: true // 將所有圖標集打包進dist目錄// local: ['ep'] // 可選:只打包指定圖標集(如element-plus)}) ]
})

圖標集選擇說明:所有可用圖標集可在node_modules/@iconify/json/collections.json中查看。在線預覽圖標可訪問icones.js.org。

2. 封裝圖標組件

創建TheIcon.vue組件作為統一的圖標渲染入口:

<script setup>
import { renderIcon } from '@/utils'defineProps({icon: {type: String,required: true,},size: {type: Number,default: 14,},color: {type: String,default: undefined,},
})
</script><template><component :is="renderIcon(icon, { size, color })" />
</template>

3. 實現渲染工具函數

在工具函數文件中添加圖標渲染邏輯:

import { h } from 'vue'
import { Icon } from '@iconify/vue'
import { NIcon } from 'naive-ui'export function renderIcon(icon, props = { size: 12 }) {return () => h(NIcon, props, { default: () => h(Icon, { icon }) })
}

4. 在項目中使用

在任意Vue組件中引入并使用:

<template><TheIcon icon="material-symbols:add" :size="18" class="mr-5" />
</template><script setup>
import TheIcon from '@/components/icon/TheIcon.vue'
</script>

方案優勢

  1. 完全離線支持:所有圖標資源打包到構建結果中,不依賴網絡請求
  2. 靈活選擇:可按需打包全部或部分圖標集,控制構建體積
  3. 統一接口:通過封裝組件提供一致的調用方式
  4. 類型安全:通過Props定義確保使用規范

注意事項

  1. 打包全部圖標集會顯著增加構建體積,建議根據實際需求選擇必要圖標集
  2. 圖標命名格式為集合名:圖標名,可在icones.js.org查找可用圖標
  3. 此方案也可用于有網絡環境,作為性能優化手段減少外部請求

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919380.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919380.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919380.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kotlin 協程之Channel

前言 在之前的文章中&#xff0c;我們已經知道了協程的啟動、掛起、取消、異常以及常用的協程作用域等基礎應用。 這些基礎應用適合的場景是一次性任務&#xff0c;執行完就結束了的場景。 launch / async 適合的場景 網絡請求數據庫查詢文件讀寫并行計算任務等等 Channel …

linux系統裝google chrome,amd64

google chrome官網最下邊其他平臺&#xff0c;linux 查看自己的系統架構&#xff08;用下邊這行代碼查看&#xff09;&#xff0c;看看是amd還是 &#xff0c;我的顯示amd64&#xff0c;amd對應.deb,rpm對應x86 &#xff0c;選擇下載 dpkg --print-architecture 然后 sudo…

【C++基礎】C++ 中const與volatile關鍵字深度解析:從面試考點到底層實現

在 C 開發崗位的面試中&#xff0c;const與volatile關鍵字是高頻考點之一。這兩個關鍵字看似簡單&#xff0c;但實際上蘊含著豐富的語義和底層機制。本文從基礎語法到高級應用&#xff0c;結合大廠真題&#xff0c;深入解析這兩個關鍵字的奧秘。一、const關鍵字&#xff1a;常量…

達夢分布式集群DPC_故障分析_yxy

達夢分布式集群DPC_節點故障分析1 DPC核心概念回顧2 場景1-主庫故障3 場景2-少數備庫故障4 場景3-多數節點故障4.1 多數節點故障&#xff08;包括主庫&#xff09;4.2 多數備庫節點故障&#xff08;不包括主庫&#xff09;1 DPC核心概念回顧 達夢分布式集群DPC&#xff0c;基于…

【高并發內存池】一、簡介 定長內存池實現

文章目錄Ⅰ. 項目介紹1、這個項目要做什么2、項目的要求Ⅱ. 什么是內存池1、池化技術2、內存池3、mallocⅢ. 設計一個定長內存池1、定長內存池的概念2、實現如何實現定長???如何繞開 malloc 向堆直接申請空間???3、性能測試Ⅰ. 項目介紹 1、這個項目要做什么 tcmalloc源…

產品設計.原型設計

產品思維&#xff1a; 1. 產品定位&#xff1a;產品的具體的、用戶畫像&#xff1b; --什么樣的人在什么環境下做什么事情的場景 2. 范圍層: 發現、識別和決策需求。--識別真假需求&#xff0c;做ROI判斷 3. 可復用的、MVP產品方案--要能復用的解決方案&#xff0c;最小可用產品…

vue3+element-plus 輸入框el-input設置背景顏色和字體顏色,樣式效果等同于不可編輯的效果

應用效果&#xff1a;代碼&#xff1a;<template> ......<el-form-item label"文件編號" label-position"right"><el-input v-model"qualityFileForm.fileNo" clearable :disabled"!props.isNew" /></el-form-it…

[ CSS 前端 ] 網頁內容的修飾

目錄 一. CSS 1. 概述 2. 基本語法 (1)行內樣式表 (2)內嵌樣式表 (3)外部樣式表 3. 選擇器 (1)標簽選擇器: (2)類選擇器: (3)通配選擇器: (4)后代選擇器: 4. 基礎樣式 (1). 文本樣式 (2). 背景樣式 (3). 列表樣式 5. 偽類 (1)定義: (2)偽類的語法&#xff1a; …

全面深入了解榛樹游戲引擎

本文還有配套的精品資源&#xff0c;點擊獲取 簡介&#xff1a;榛樹游戲引擎&#xff08;Hazel&#xff09;是一款專為游戲開發設計的先進軟件工具&#xff0c;它集成了多種功能&#xff0c;支持現代圖形API&#xff0c;具有高性能的物理模擬系統和易學易用的腳本語言&#…

“大模型”技術專欄 | 淺談基于 Kubernetes 的 LLM 分布式推理框架架構:概覽

編者按&#xff1a;人工智能正以前所未有的滲透力重塑生產與生活圖景。作為國內領先的數據智能科技企業&#xff0c;和鯨科技自 2015 年成立以來&#xff0c;深耕人工智能與數據科學&#xff0c;歷經十年發展&#xff0c;已在氣象、教育、醫療、航空航天、金融、通信、能源、零…

【JS】認識并實現一個chrome擴展程序

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 這篇文章主要介紹chrome擴展程序。 學其所用&#xff0c;用其所學。——梁啟超 歡迎來到我的博客&#xff0c;一起學習&#xff0c;共同進步。 喜歡的朋友可以關注一下&#xff0c;下次更新不迷路&#…

jeecgboot項目遇見的一些問題:

1.當你想修改項目的標題&#xff0c;前端將jeecgboot改成你想要的標題的時候&#xff0c;去前端的.env文件中進行修改。圖1 修改標題根據路徑找到文件&#xff0c;將網站標題改成自己需要的就可以正常顯示了。圖2 顯示前圖3 顯示后2.在動態數組中&#xff0c;如果你知道數組需要…

項目里程碑設定有哪些方法

要科學設定項目里程碑&#xff0c;可采用以下幾種方法&#xff1a;基于項目階段劃分法、關鍵交付物導向法、依賴關系鏈分析法、時間驅動法、風險節點識別法、目標成果導向法、資源約束分析法、客戶驗收節點設定法。其中&#xff0c;關鍵交付物導向法尤為實用。該方法以項目中必…

英偉達顯卡驅動怎么更新 詳細步驟教程

英偉達顯卡驅動程序對于電腦的圖形性能至關重要&#xff0c;它能確保顯卡在游戲、設計、視頻渲染等方面發揮最大性能。如果驅動過舊&#xff0c;可能會導致游戲運行不暢、軟件不兼容&#xff0c;甚至系統出現錯誤。因此&#xff0c;定期更新英偉達顯卡驅動非常必要。下面將為大…

基于單片機智能拐杖/導盲杖/老人防摔倒設計

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 該設計針對老年人及行動不便人群的需求&#xff0c;開發了一款集成單片機控制的智能拐杖。拐杖采…

Node.js完整安裝配置指南(包含國內鏡像配置)

Node.js完整安裝配置指南&#xff08;包含國內鏡像配置&#xff09; 一、Node.js安裝 方法1&#xff1a;使用Chocolatey安裝&#xff08;推薦&#xff09; # 安裝最新LTS版本 choco install nodejs# 或安裝指定版本 choco install nodejs --version20.11.0方法2&#xff1a;…

AI硬件 - AMD顯卡架構演進及產品線

目錄 一、AMD顯卡架構演進總結 二、典型AMD AI顯卡歷代型號參數對比表 關鍵參數說明: 三、AMD 特供中國AI顯卡產品線全覽 1. 企業級Instinct系列(數據中心/科研) 2. 消費級AI加速顯卡(開發/本地推理) 四、與NVIDIA顯卡的AI性能對比 關鍵指標實測數據 五、模型框架…

論文閱讀-Gated CRF Loss for Weakly Supervised Semantic Image Segmentation

文章目錄1 背景2 模塊2.1 部分交叉熵損失2.2 弱標簽&#xff08;線/點&#xff09;2.3 Gated CRF Loss3 效果3.1 總體效果3.2 消融實驗4 總結參考文獻1 背景 全監督的語義分割需要對全圖進行完全而精確的標注。當需要標注的目標在圖像中較多&#xff0c;又或形狀不規則&#x…

零墨云A4mini打印機設置電腦通過局域網絡進行打印

文檔時間&#xff1a;2025年8月 1.演示環境 操作系統版本&#xff1a;Windows11 打印機版本&#xff1a;零墨云A4mini 這款打印機打印的方式有藍牙、遠程云和局域網&#xff0c;這里演示的是電腦通過局域網打印 通過電腦版局域網(這個局域網是網絡可達)打印之前&#xff0c…

ESP8266 入門(第 3 部分):使用 Arduino IDE 對 ESP8266 進行編程并刷新其內存

使用 Arduino IDE 對 ESP8266 進行編程并刷新其內存 這是我們之前 ESP 教程的延續的第三個教程,其中我們將學習使用 Arduino IDE(不使用 Arduino)對 ESP8266 進行編程和燒錄 ESP8266。在前面的教程中,我們介紹了 WiFi 收發器ESP8266簡介以及將 AT 命令與 ESP8266 結合使用。…