>我正在使用 Stencil 创建一个原生浏览器 Web 组件,使用影子进行视图封装。
如果在 SCSS 文件的顶部我使用
@import url($url-icons);
这会让每个组件重新下载每个组件实例的字体/图标文件,从而对性能产生负面影响吗?
如果是这样,处理这种共享依赖项的最佳做法是什么?
浏览器对这些字体文件有缓存机制,所以文件"应该"只下载一次(当 devtools 打开时,情况并非如此disable cache
,许多开发人员使用(。但这实际上是浏览器的实现细节,而不是 Web 组件的实现细节。
这意味着在 Web 组件中导入字体本身将导致浏览器发出多个请求,这可能会产生额外的成本 - 将仅获取字体一次的责任委托给浏览器。
最好只在 Web 组件 css 中包含font-family
定义,并在需要 Web 组件库的应用中或在库 init 方法中(仅(导入一次字体(Stencil
您可以将其添加到您的defineCustomElements()
调用中(