国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - 在Vue.js中加載字體的優秀做法(適應于其他靜態資源)

在Vue.js中加載字體的優秀做法(適應于其他靜態資源)

2021-04-15 23:41杭州程序員小張 JavaScript

添加字體不應該對性能產生負面影響。在本文中,我們將探討在 Vue 應用程序中加載字體的優秀實踐。

添加字體不應該對性能產生負面影響。在本文中,我們將探討在 Vue 應用程序中加載字體的優秀實踐。

正確聲明font-face的字體

 

確保正確聲明字體是加載字體的重要方面。這是通過使用 font-face 屬性來聲明你選擇的字體來實現的。在你的Vue項目中,這個聲明可以在你的根CSS文件中完成。在進入這個問題之前,我們先來看看Vue應用的結構。

  1. /root 
  2.   public/ 
  3.     fonts/ 
  4.       Roboto/ 
  5.         Roboto-Regular.woff2 
  6.         Roboto-Regular.woff 
  7.     index.html 
  8.   src/ 
  9.     assets/ 
  10.       main.css 
  11.     components/ 
  12.     router/ 
  13.     store/ 
  14.     views/ 

我們可以像這樣在 main.css 中進行 font-face 聲明:

  1. // src/assets/main.css 
  2.  
  3. @font-face { 
  4.   font-family: "Roboto"; 
  5.   font-weight: 400; 
  6.   font-style: normal; 
  7.   font-display: auto; 
  8.   unicode-range: U+000-5FF; 
  9.   src: local("Roboto"), url("/fonts/Roboto/Roboto-Regular.woff2") format("woff2"), url("/fonts/Roboto/Roboto-Regular.woff") format("woff"); 

首先要注意的是 font-display:auto。使用 auto 作為值可以讓瀏覽器使用最合適的策略來顯示字體。這取決于一些因素,如網絡速度、設備類型、閑置時間等。

要想更多地控制字體的加載方式,你應該使用 font-display: block,它指示瀏覽器短暫地隱藏文本,直到字體完全下載完畢。其他可能的值有 swap、fallback 和 optional。你可以在這里閱讀更多關于它們的信息。

需要注意的是 unicode-range: U+000-5FF,它指示瀏覽器只加載所需的字形范圍(U+000 - U+5FF)。你還想使用woff和woff2字體格式,它們是經過優化的格式,可以在大多數現代瀏覽器中使用。

另外需要注意的是 src 順序。首先,我們檢查字體的本地副本是否可用(local("Roboto”))并使用它。很多Android設備都預裝了Roboto,在這種情況下,我們將使用預裝的副本。如果沒有本地副本,則在瀏覽器支持的情況下繼續下載woff2格式。否則,它會跳至支持的聲明中的下一個字體。

預加載字體

 

一旦你的自定義字體被聲明,你可以使用 告訴瀏覽器提前預加載字體。在 public/index.html 中,添加以下內容:

  1. <link rel="preload" as="font" href="./fonts/Roboto/Roboto-Regular.woff2" type="font/woff2" crossorigin="anonymous"> 

rel = “preload” 指示瀏覽器盡快開始獲取資源,as = “font” 告訴瀏覽器這是一種字體,因此它優先處理請求。還要注意 crossorigin="anonymous",因為如果沒有這個屬性,預加載的字體會被瀏覽器丟棄。這是因為瀏覽器是以匿名方式獲取字體的,所以使用這個屬性就可以匿名請求。

使用 link=preload 可以增加自定義字體在需要之前被下載的機會。這個小調整大大加快了字體的加載時間,從而加快了您的Web應用程序中的文本渲染。

使用link = preconnect托管字體

 

當使用Google fonts等網站的托管字體時,你可以通過使用 link=preconnect 來獲得更快的加載時間。它告訴瀏覽器提前建立與域名的連接。

如果您使用的是Google字體提供的Roboto字體,則可以在 public/index.html 中執行以下操作:

  1. <link rel="preconnect" href="https://fonts.gstatic.com"> 
  2. ... 
  3. <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> 

這樣就可以建立與原點https://fonts.gstatic.com 的初始連接,當瀏覽器需要從原點獲取資源時,連接已經建立。從下圖中可以看出兩者的區別。

在Vue.js中加載字體的優秀做法(適應于其他靜態資源)

當加載字體時沒有使用 link=preconnect 時,你可以看到連接所需的時間(DNS查找、初始連接、SSL等)。當像這樣使用 link=preconnect 時,結果看起來非常不同。

在Vue.js中加載字體的優秀做法(適應于其他靜態資源)

在這里,你會發現DNS查找、初始連接和SSL所花費的時間已經不存在了,因為前面已經進行了連接。

在Vue.js中加載字體的優秀做法(適應于其他靜態資源)

使用service workers緩存字體

 

字體是靜態資源,變化不大,所以它們是緩存的好候選。理想情況下,您的Web服務器應該為字體設置一個較長的 max-age expires 頭,這樣瀏覽器緩存字體的時間就會更長。如果你正在構建一個漸進式網絡應用(PWA),那么你可以使用service workers來緩存字體,并直接從緩存中為它們提供服務。

要開始使用Vue構建PWA,請使用vue-cli工具生成一個新項目:

  1. vue create pwa-app 

選擇Manually select features選項,然后選擇Progressive Web App (PWA) Support:

在Vue.js中加載字體的優秀做法(適應于其他靜態資源)

這些就是我們生成PWA模板所需要的唯一東西。完成后,你就可以把目錄改為 pwa-app,然后為app服務。

  1. cd pwa-app 
  2. yarn serve 

你會注意到在 src 目錄下有一個文件 registerServiceWorker,其中包含了默認的配置。在項目的根目錄下,如果 vue.config.js 不存在,請創建它,如果存在,請添加以下內容:

  1. // vue.config.js 
  2. module.exports = { 
  3.   pwa: { 
  4.     workboxOptions: { 
  5.       skipWaiting: true, 
  6.       clientsClaim: true, 
  7.     } 
  8.   } 

vue-cli工具使用PWA plugin生成service worker。在底層,它使用Workbox來配置service worker和它控制的元素、要使用的緩存策略以及其他必要的配置。

在上面的代碼片段中,我們要確保我們的應用程序始終由service worker的最新版本控制。這是必要的,因為它確保我們的用戶總是查看應用程序的最新版本。您可以簽出Workbox配置文檔,以獲得對生成的service worker行為的更多控制。

接下來,我們將自定義字體添加到 public 目錄。我有以下結構:

  1. root/ 
  2.   public/ 
  3.     index.html 
  4.     fonts/ 
  5.       Roboto/ 
  6.         Roboto-Regular.woff 
  7.         Roboto-Regular.woff2 

一旦完成了Vue應用程序的開發,就可以通過從終端運行以下命令來構建它:

  1. yarn build 

這將結果輸出到 dist 文件夾中。如果你檢查文件夾的內容,你會注意到一個類似于

precache-manifest.1234567890.js 的文件。它包含了要緩存的資產列表,這只是一個包含修訂版和URL的鍵值對的列表。

  1. self.__precacheManifest = (self.__precacheManifest || []).concat([ 
  2.   { 
  3.     "revision": "3628b4ee5b153071e725", 
  4.     "url": "/fonts/Roboto/Roboto-Regular.woff2" 
  5.   }, 
  6.   ... 
  7. ]); 

public/ 文件夾中的所有內容都是默認緩存的,其中包括自定義字體。有了這個地方,你可以用像service這樣的包來serve你的應用程序,或者把 dist 文件夾托管在web服務器上查看結果。你可以在下面找到一個應用程序的截圖。

在Vue.js中加載字體的優秀做法(適應于其他靜態資源)

在隨后的訪問中,字體是從緩存中加載的,這可以加快應用程序的加載時間。

結論

 

在這篇文章中,我們研究了在Vue應用程序中加載字體時應用的一些最佳實踐。使用這些實踐將確保你提供的字體看起來不錯,而不影響應用的性能。

原文地址:https://www.toutiao.com/i6950575592471331361/

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品久久久久久国产 | 久久久久久久国产精品 | 人人人人澡人人爽人人澡 | 精品久久av | 欧美簧片在线 | 欧美精品在欧美一区二区少妇 | 亚洲日本乱码一区两区在线观看 | 久国产精品视频 | 国产精品视频一区二区三区四 | hsck成人网| 亚洲免费成人在线视频 | 伊人逼逼 | 国产特黄一级 | 久久久一区二区三区 | 亚洲欧美一区二区视频 | 亚洲精品久久久久一区二区三区 | 亚洲国产婷婷香蕉久久久久久99 | 日韩中文视频 | 亚洲精品视频在线免费 | 免费在线观看黄 | 久久久久国产精品免费 | 日韩欧美一区二区三区 | 亚洲精品在线视频 | 久久久精品日本 | 日日鲁鲁 | 91综合网| 91麻豆产精品久久久 | 国产成人高清 | 国产欧美日韩一区二区三区四区 | 中文字幕av亚洲精品一部二部 | 午夜精品久久久久久久久久久久久 | 久久综合九色综合欧美狠狠 | 黄色国产一级片 | 99久久婷婷国产综合精品电影 | 色婷婷综合久久 | 日日干夜夜干 | 欧美日韩在线电影 | 876av国产精品电影 | 亚洲综合激情 | 黄色国产视频 | 九九天堂 |