Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 盖茨比:为什么我的字体文件有时会下载两次_Css_Reactjs_Fonts_Frontend_Gatsby - Fatal编程技术网

Css 盖茨比:为什么我的字体文件有时会下载两次

Css 盖茨比:为什么我的字体文件有时会下载两次,css,reactjs,fonts,frontend,gatsby,Css,Reactjs,Fonts,Frontend,Gatsby,我正在开发一个网站使用盖茨比与反应。我发现每次刷新页面时,都会加载1.6MB/1.6MB的资源。我对网络开发有点陌生,所以我真的不知道这是要下载很多还是只是一个中等数量 但是我注意到了一个问题,那就是我在Netlify上部署我的网站之后,字体文件被请求了两次,所以它被下载了两次。 你可以在截图中看到有两个Roboto Light文件被请求。 下面是如何在代码库中包含字体文件 首先,我设置了一个网页包别名“@font”:path.resolve(uu dirname,'src/fonts'),

我正在开发一个网站使用盖茨比与反应。我发现每次刷新页面时,都会加载1.6MB/1.6MB的资源。我对网络开发有点陌生,所以我真的不知道这是要下载很多还是只是一个中等数量

但是我注意到了一个问题,那就是我在Netlify上部署我的网站之后,字体文件被请求了两次,所以它被下载了两次。 你可以在截图中看到有两个Roboto Light文件被请求。

下面是如何在代码库中包含字体文件

首先,我设置了一个网页包别名
“@font”:path.resolve(uu dirname,'src/fonts'),

然后在
src/styles/fonts.js中

import RobotoLight from '@fonts/Roboto/Roboto-Light.ttf';
export { RobotoLight};
import { createGlobalStyle } from 'styled-components';
const GlobalStyle = createGlobalStyle`
@font-face {
  font-family: 'Roboto';
  src: url(${fontFamilies.RobotoLight}) format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: auto;
}
...
最后在我的
src/styles/GlobalStyle.js中

import RobotoLight from '@fonts/Roboto/Roboto-Light.ttf';
export { RobotoLight};
import { createGlobalStyle } from 'styled-components';
const GlobalStyle = createGlobalStyle`
@font-face {
  font-family: 'Roboto';
  src: url(${fontFamilies.RobotoLight}) format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: auto;
}
...
因此,每当我需要应用这个
RobotoLight
font时,我只需将元素的
font系列
设置为
Roboto

我不知道为什么我的字体会被多次下载,我也不知道这种包含字体的方式是否是最佳实践。我还想知道
1.6mb/1.6mb资源是否太多

在一个页面上加载1.6MB是不是很大

这很难回答,因为这完全取决于上下文。对于一个没有任何图像的简单页面来说,这可能是很多,但对于一个更复杂的页面来说,这可能是很少的。 此外,除了页面大小之外,还需要考虑页面加载的速度。2MB页面的加载速度(或似乎加载速度)可能比500KB页面快

字体文件会被请求两次,因此会被下载两次

从您的屏幕截图来看,情况并非如此:Roboto显示在两行上,但数据似乎只下载了一次(88.3KB)

如何在盖茨比中加载字体

建议在Gatsby中添加Google字体的方法是在头盔组件中包含Google字体链接元素。反应头盔在本节中进行了讨论

也可以通过CSS导入在CSS文件顶部添加字体,但是字体下载将取决于CSS解析,而通过头盔添加的字体将立即下载

作为参考,CSS导入如下所示:

@import url('https://fonts.googleapis.com/css?family=Roboto:300');
要使用Roboto light,您需要添加字体重量为300的Roboto版本

<Helmet>
  <link href="https://fonts.googleapis.com/css?family=Roboto:300" rel="stylesheet"/>
</Helmet>
为了提高性能,最好只加载您使用的字体。如果您还想使用标准版的Roboto(字体重量:400),您可以使用以下链接:
https://fonts.googleapis.com/css?family=Roboto:300,400

在一个页面上加载1.6MB是不是很大

这很难回答,因为这完全取决于上下文。对于一个没有任何图像的简单页面来说,这可能是很多,但对于一个更复杂的页面来说,这可能是很少的。 此外,除了页面大小之外,还需要考虑页面加载的速度。2MB页面的加载速度(或似乎加载速度)可能比500KB页面快

字体文件会被请求两次,因此会被下载两次

从您的屏幕截图来看,情况并非如此:Roboto显示在两行上,但数据似乎只下载了一次(88.3KB)

如何在盖茨比中加载字体

建议在Gatsby中添加Google字体的方法是在头盔组件中包含Google字体链接元素。反应头盔在本节中进行了讨论

也可以通过CSS导入在CSS文件顶部添加字体,但是字体下载将取决于CSS解析,而通过头盔添加的字体将立即下载

作为参考,CSS导入如下所示:

@import url('https://fonts.googleapis.com/css?family=Roboto:300');
要使用Roboto light,您需要添加字体重量为300的Roboto版本

<Helmet>
  <link href="https://fonts.googleapis.com/css?family=Roboto:300" rel="stylesheet"/>
</Helmet>

为了提高性能,最好只加载您使用的字体。如果您还想使用标准版的Roboto(字体重量:400),您可以使用以下链接:
https://fonts.googleapis.com/css?family=Roboto:300,400

你好,谢谢你的回答!你怎么知道虽然Roboto出现在两行,但它只下载了一次?非常感谢。不客气!两个机器人中的第一个没有“尺寸”这一事实让我想到了这一点,但我可能错了。嗨,谢谢你的回答!你怎么知道虽然Roboto出现在两行,但它只下载了一次?非常感谢。不客气!两个机器人中的第一个没有“尺寸”这一事实让我想到了这一点,但我可能错了。