webpack4 系列教程(十一):字體文件處理

来源:https://www.cnblogs.com/geyouneihan/archive/2018/10/10/9769778.html
-Advertisement-
Play Games

教程所示圖片使用的是 github 倉庫圖片,網速過慢的朋友請移步 "《webpack4 系列教程(十一):字體文件處理》原文地址" 。或者來我的小站看更多內容: "godbmw.com" 0. 課程介紹和資料 " 本節課源碼" " 所有課程源碼" 本節課的代碼目錄如下: 本節課的 內容如下: 1. ...


教程所示圖片使用的是 github 倉庫圖片,網速過慢的朋友請移步《webpack4 系列教程(十一):字體文件處理》原文地址。或者來我的小站看更多內容:godbmw.com

0. 課程介紹和資料

本節課的代碼目錄如下:

本節課的package.json內容如下:

{
  "devDependencies": {
    "css-loader": "^1.0.0",
    "extract-text-webpack-plugin": "^4.0.0-beta.0",
    "file-loader": "^1.1.11",
    "style-loader": "^0.21.0",
    "url-loader": "^1.0.1",
    "webpack": "^4.16.1"
  }
}

1. 準備字體文件和樣式

如上面的代碼目錄所示,字體文件和樣式都放在了/src/assets/fonts/目錄下。點我直接下載相關文件

2. 編寫入口文件

為了提取 css 樣式到單獨文件,需要用到ExtractTextPlugin插件。在項目的入口文件需要引入style-loadercss-loader:

// app.js
import "style-loader/lib/addStyles";
import "css-loader/lib/css-base";

import "./assets/fonts/iconfont.css";

3. 處理字體文件

藉助url-loader,可以識別並且處理eotwoff等結尾的字體文件。同時,根據字體文件大小,可以靈活配置是否進行base64編碼。下麵的 demo 就是當文件大小小於5000B的時候,進行base64編碼。

// webpack.config.js

const path = require("path");
const ExtractTextPlugin = require("extract-text-webpack-plugin");

let extractTextPlugin = new ExtractTextPlugin({
  filename: "[name].min.css",
  allChunks: false
});

module.exports = {
  entry: {
    app: "./src/app.js"
  },
  output: {
    publicPath: __dirname + "/dist/",
    path: path.resolve(__dirname, "dist"),
    filename: "[name].bundle.js",
    chunkFilename: "[name].chunk.js"
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: {
            loader: "style-loader"
          },
          use: [
            {
              loader: "css-loader"
            }
          ]
        })
      },
      {
        test: /\.(eot|woff2?|ttf|svg)$/,
        use: [
          {
            loader: "url-loader",
            options: {
              name: "[name]-[hash:5].min.[ext]",
              limit: 5000, // fonts file size <= 5KB, use 'base64'; else, output svg file
              publicPath: "fonts/",
              outputPath: "fonts/"
            }
          }
        ]
      }
    ]
  },
  plugins: [extractTextPlugin]
};

4. 編寫index.html

按照上面的配置,打包好的cssjs均位於/src/dist/文件夾下。因此,需要在index.html中引入這兩個文件(假設已經打包完畢):

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="./dist/app.min.css">
</head>

<body>
  <div id="app">
    <div class="box">
      <i class="iconfont icon-xiazai"></i>
      <i class="iconfont icon-shoucang"></i>
      <i class="iconfont icon-erweima"></i>
      <i class="iconfont icon-xiangshang"></i>
      <i class="iconfont icon-qiehuanzuhu"></i>
      <i class="iconfont icon-sort"></i>
      <i class="iconfont icon-yonghu"></i>
    </div>
  </div>
  <script src="./dist/app.bundle.js"></script>
</body>

</html>

5. 結果分析和驗證

CMD中運行webpack進行打包,打包結果如下:

在 Chrome 中打開index.html,字體文件被正確引入:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Databricks的工程師,Apache Spark Committer介紹了Databricks和Spark的歷史,包括了Spark 1.4中的重要特性和進展,涵蓋了Spark早期版本的主要功能和使用方法,講了大數據領域近些年的發展,也介紹了Spark從這些年其它理論或者技術中吸取的靈感,當然, ...
  • 本文介紹了無法通過fastboot擦除misc分區時,利用QFIL工具退出FFBM的詳細步驟。 ...
  • 一、屏蔽系統簡訊功能 1、屏蔽所有簡訊 android 4.2 簡訊發送流程分析可參考這篇 [戳這][1] 源碼位置 vendor\mediatek\proprietary\packages\apps\Mms\src\com\android\mms\transaction\SmsReceiverSe ...
  • 歡迎大家前往 "騰訊雲+社區" ,獲取更多騰訊海量技術實踐乾貨哦~ 本文由 "QQ音樂技術團隊" 發表於 "雲+社區專欄" 一、問題背景與分析 不久前,團隊發現其Android平臺App在播放MV視頻《鳳凰花開的路口》時,會帶有如電流聲一般的雜音,這影響了用戶體驗。 研發同學在初步定位時,發現有如下 ...
  • 歡迎大家前往 "騰訊雲+社區" ,獲取更多騰訊海量技術實踐乾貨哦~ 本文由 "QQ音樂技術團隊" 發表於 "雲+社區專欄" 上篇:Android P 行為變更適配 Android P 這次有很多行為變更,其中不乏一些需要亟需適配的變更。 一、全面屏檢測 在 Android 8.0 時代各個手機廠商就 ...
  • 測試內容 ...
  • 1、清除浮動的相容性(低版本的瀏覽器不相容問題) .clearfix:after{ content:""; clear:both; display:block; visibility:hidden; height:0; } .clear{ *zoom:1; } 2、透明度的相容性 opacity:0 ...
  • 如今Webpack已經是一個不可或缺的前端構建工具,藉助這個構建工具,我們可以使用比較新的技術(瀏覽器不能直接支持)來開發。 你是否好奇你寫的代碼經過Webpack構建之後會生成什麼東西?是否有時調試遇到莫名其妙的問題? 本文不講如何進行配置,只是基於幾個基礎的例子,簡要分析一下 webpack@4 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...