2020年如何在Vue项目中合理使用FontAwesome?步骤是否最优?
在Laravel+Vue 2.5项目中离线使用FontAwesome的优化方案
你的这个流程是完全可行的,但确实有可以简化和优化的空间,让我们一步步捋清楚怎么让这个操作更高效:
当前流程的小痛点
当前步骤逻辑没问题,但每次新增图标都要分别修改导入语句和单独调用library.add,时间久了不仅繁琐,代码也会越来越零散。
优化后的最简方案
1. 统一管理FontAwesome配置文件
创建一个专门的配置文件(比如resources/js/plugins/fontawesome.js),把所有图标导入、注册的逻辑集中在这里,避免污染app.js:
import { library } from '@fortawesome/fontawesome-svg-core' import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' // 按图标样式分类导入,结构更清晰 import { faUserSecret, faEye } from '@fortawesome/free-solid-svg-icons' import { faComment } from '@fortawesome/free-regular-svg-icons' import { faGithub } from '@fortawesome/free-brands-svg-icons' // 一次性批量添加所有图标,不用每次单独调用library.add library.add( faUserSecret, faEye, faComment, faGithub ) // 全局注册组件 Vue.component('font-awesome-icon', FontAwesomeIcon)
然后在app.js里只需要一行代码引入这个配置文件:
import './plugins/fontawesome'
2. 简化图标导入的对应规则
记住FontAwesome图标名和导入变量的转换逻辑,不用每次去详情页复制代码:
- 图标class里的
fa-xxx会转换成驼峰命名的变量,比如fa-eye→faEye - 样式前缀对应不同的包:
fas(实心样式)→ 来自@fortawesome/free-solid-svg-iconsfar(空心样式)→ 来自@fortawesome/free-regular-svg-iconsfab(品牌图标)→ 来自@fortawesome/free-brands-svg-icons
这样新增图标时,你只需要:
- 搜索到目标图标后,确定它的样式分类和图标名
- 在
fontawesome.js对应的分类下添加导入语句,然后把变量加入library.add的列表中 - 在Vue组件里直接使用:
<font-awesome-icon icon="eye" />(如果是空心样式,要写成<font-awesome-icon icon="far eye" />)
3. 关于全量导入的说明
虽然可以直接导入整个图标库(比如import * as solidIcons from '@fortawesome/free-solid-svg-icons'然后library.add(...Object.values(solidIcons))),但这会导致打包体积大幅增加,所以按需导入依然是最优选择,毕竟我们只需要用到项目中实际需要的图标。
总结
优化后的流程会更简洁高效,既保持了离线运行的优势,又减少了重复操作:
- 首次配置:创建统一的FontAwesome配置文件,完成基础导入和注册
- 新增图标:2步搞定 → ① 在配置文件中添加对应图标导入和批量添加;② 在组件中调用图标
内容的提问来源于stack exchange,提问作者nowox
相关产品推荐
相关产品推荐

