我应该使用 fontawesome-free 还是 angular-fontawesome

Posted

技术标签:

【中文标题】我应该使用 fontawesome-free 还是 angular-fontawesome【英文标题】:Should I use fontawesome-free or angular-fontawesome 【发布时间】:2018-12-14 22:51:05 【问题描述】:

我们正在启动一个 Angular 6 项目并希望使用 Font Awesome 5.1。 Font Awesome 提供了两个 Node 包:

@fortawesome/angular-fontawesome - 将 SVG 与 JS 结合使用 @fortawesome/fontawesome-free - 使用带有 CSS 的 Web 字体

使用 SVG 和 JS 是使用 Font Awesome 的新方法,而 Web 字体和 CSS 是更经典的方法。对我来说,将 SVG 与 JS 一起使用似乎有点麻烦,因为您必须 import 每个图标,但它可以节省文件大小。

我们将在我们的应用程序中使用大约 30 个图标,并且想知道哪种方法更适合我们。

【问题讨论】:

致以“主要基于意见”的方式投票结束此内容的人们:真的有 没有 事实可以用来帮助人们在 SVG 和 Web 字体之间进行选择吗?使用网络字体和 CSS 真的每一种 情况下都一样好吗?如果是这样的话,我会重视捍卫该立场的答案。 【参考方案1】:

我只是想知道同样的事情,所以即使它是基于意见的(因此可能会关闭),我会回答你:

我首先使用库作为described in their guide。

我很快意识到你可以使用你想要的所有图标,因为没有办法使用fasfar 图标。

所以我切换到“旧”方式:我安装了库

npm i @fortawesome/fontawesome-free

并将其导入我的angular.json 文件中:

projects -> yourProject -> architect -> build -> styles : 
  "node_modules/@fortawesome/fontawesome-free/css/all.css"

我现在必须使用通常的方式来处理

<i class="fab fa-accessible-icon"></i>

但我可以使用提供的所有图标,而不仅仅是一组。

【讨论】:

如果我错了,请纠正我,但我认为far 图标是 PRO 功能,需要付费许可证,这就是你不能使用它们的原因。 fas 是默认免费版本(与fa 相同) 嗯,你可能错了,因为我没有用“旧方式”付费就使用它们,但由于我不是字体很棒的专业人士,我也不能确定我没有错! 假设您不会直接修改它,我建议您在 angular.json 中使用较小的缩小版本 (all.min.css),而不是 all.css【参考方案2】:

其他一些注意事项:

    angular-fontawesome 与 Angular 框架紧密集成,所以如果你认为你可能想要一些数据绑定图标(例如:带有未读消息计数器的电子邮件图标,或者一些带有旋转角度的图标,绑定到模型中的某些数据值),那么您可能会发现使用 angular-fontawesome 会很好,其中图标不仅呈现为 SVG,还呈现为 Angular 组件。 Font Awesome 5 的 SVG 方法具有 Web Fonts 和 CSS 方法不具备的一些功能。例如,Power Transforms、Layers, and Counters。由于angular-fontawesome 是在 SVG 上构建并使用 javascript 实现,因此它也支持所有这些额外功能。 Tree-shaking / subsetting:有很多很多你不会使用的图标。如果您关心在生产构建中优化下载资产的大小,那么您可能需要确保您使用的是 tree-shaking,如果您使用 angular-cli,您将得到 mostly automagically(注意:请参阅有关配置您的构建以解决构建性能回归问题的链接,该回归会导致 Webpack 4 生产构建速度变慢,直到修复发布。)

【讨论】:

【参考方案3】:

使用 Angular Font Awesome,因为它是一个 Angular 组件。还呈现为 SVG,因此有助于数据绑定逻辑。

【讨论】:

以上是关于我应该使用 fontawesome-free 还是 angular-fontawesome的主要内容,如果未能解决你的问题,请参考以下文章

通过@import或通过构建工具concat scss文件

我应该使用 createRef 还是 useRef,为啥?

我应该使用 display: block,还是应该始终使用 display: flex?

我应该使用 ScrollView 还是 RecyclerView 在片段中滚动?

我应该使用 MapView 还是 MapFragment

我应该使用 SQL 还是 Core Data?