Element Plus 组件库相关技能揭秘:7. 组件完成的根本流程及 Icon 组件的完成

咱们能够看到咱们的图标成功烘托出来了。

字体图标

咱们还能够经过字体图标进行设置:

<template>
  <div>
      <el-icon :color="'green'" :size="15">
      	<i class="iconfont iconlogistics-car"></i>
      </el-icon>
  </div>
</template>
<script setup lang="ts"></script>
<style>
@font-face {
  font-family: 'iconfont';
  src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAPIAAsAAAAACDAAAAN8AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACDMgqDKIJ8ATYCJAMUCwwABCAFhGcHXRszB8ieGjszMAURLRpbqK1NZLgai+Bpjd+83b37rkkUPJlGTXgTT1Q8iYdGtZBInqmizTP5JueqHACqHCL0ukm3u5zmUBE5JMlCIiqkp/Fvf/7/Tv0JTozFtidAC2TM7gl21TvSDl1Am7qfB7DYYs8/WVNbJGPOvRCigKCAWDUvXH2FqqsDgBEpuczPzki9YezKi3iOQLvV4mnu8nJLgemFOlUAR9qMziDOjQt9jgH63KDU5IZWoW67sYhHKtLtdMFD//vjn7WhT1JlxjH7T6WJwO4vsajNnU0n+Su3Q4CTEypkLF+ZKS7WOy7QCsPLaWkvG65tG6BdqySN2i+2qPxZahpiyd5U7eY/PEKSFaJmZHeCbShS+GlrIwQ/YxESPysRMj9rRW+nvALtsOg1wHOsmRzzL5IQXV0r2kzGaq3jaLnF+/VicyC71TjxsrzcdtZ20pCJG88Y4c4TKNefsuzjtxfkuCfx/iB25DlF3RiftC3VEO8xZFM2A0dvvO7J4xbdb/Dzbn5g56Vx48CdycHBDQeFt09l735ICJWYiystE0rLmTzH+aew04a1cR72nVcdHZHCyh8UhZbPmZ99R0vcYoHNW8yxRb45HFSQVL7tbneSLJMwwGzJPEoPP7L7Kzr+FhzVSmlQNP3r8HLHTW1uTh22uJ5mODzg2H9/M2RxRIVPtldGhle2zxbiIm7ETaq3xGEVEWLX0etr2H3G1qBe/aFD8yrrADTzzQyQLtFTkKU/+jve5Sz732AW+1+/o4AfK/GoX9YoMv6IUmvB/1Mea4laVB5SlrJm2yaoRvsTXom/1PDDPP3exlENtM4mtBqIIWkxAVmrKWwhLkGlw1qotdoM7ZZJ295hgIqWKG2Y0wMg9FqFpNsLyHqdYAvxHirDfkOt1z9odyBMDuswF6xNEEORCDa1Q55VKrClpn6vxYhrljGkKFCOiMBDHwzyD8zGMpACkSGWCC1cMKUYYqKUw3R6HZLJlFBFlBLEUn8xparogABc9iX+rFIOUhAIg0JEoCbtIB5LSQG76DT984ohnGYyDNISWx4mBDzsHQriL7AFNkOhaNVyJccIWnCCURQGYQRE5aB0bkNkSlgJUpWPk0BYlD9xj6BKtAATDbdV+M+vkj/gLmhnHFFFihwlqqh1XZhyvHAdKYIfyxCDO8jzo0ighmFbELUHAwA=')
    format('woff2');
}
.iconfont {
  font-family: 'iconfont' !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.iconlogistics-car:before {
  content: 'e616';
}
</style>

运转成果:

Element Plus 组件库相关技能揭秘:7. 组件完成的根本流程及 Icon 组件的完成

字体图标也是能够经过阿里的 iconfont 图标库进行设置,这儿就不作过多深化讲解了。

Element Plus 中的图标库

Element Plus 中的图标库又是经过一个独立的项目进行完成的,也便是你装置了 Element Plus 库之后,还要运用她的图标库,那么你还需求装置一个 npm 包:@element-plus/icons-vue。它的完成原理也便是咱们上面的榜首种 SVG 图标组件的办法,经过遍历读取每个 SVG 图标的源码,然后生成各自的 SVG 图标组件,然后引进的时分是经过大局注册的办法进行运用。这儿就不作过多深化解析了。

总结

在本章节中咱们经过完成 Icon 组件进行了解 Element Plus 组件完成的根本原理,Icon 组件尽管简略,但它却包括了一个组件的悉数根底流程。

经过 icon 组件目录结构,咱们看出 Vue3 Composition API 的优势,能够依据逻辑功能来安排代码。经过界说组件特点 prop,咱们了解一些组件 prop 的特性,经过 prop 传递数据是单向的,父组件的特点改动会向下传递给子组件,可是反过来不可。这能够避免子组件意外改动父组件的状况,然后导致组件的数据流难以了解。

接着在完成 Icon 组件的进程,咱们学习了如安在 Vue 组件中运用 CSS 变量。 Vue 中能够经过在行内的 style 特点中界说 CSS 变量,然后就能够经过 Vue 的动态变量操控 CSS 变量,再在 style 标签中运用行内界说好的 CSS 变量。

接着咱们经过部分注册组件和大局注册组件的办法完成了 Icon 组件在 play 项目中的烘托展现。可是 Vue3 并没有对自界说大局组件做 TypeScript 类型支撑处理,咱们学习了运用 TypeScript 的增强类型体系,进行扩展 Vue3 本来的类型体系。

咱们还学习了 Element Plus 中经过运用defineOptions宏,在<script setup>中运用 Options API 来处理 <script setup> 无法设置组件称号的问题。

终究咱们讲解了在 Icon 组件中怎么完成图标的,主要有两种办法,一种是 SVG 组件图标,一种是字体图标。

欢迎重视本专栏,了解更多 Element Plus 组件库常识。

本专栏文章:

1. Vue3 组件库的规划和完成原理

2. 组件库工程化实战之 Monorepo 架构建立

3. ESLint 中心原理分析

4. ESLint 技能原理与实战及代码标准自动化详解

5. 从终端指令解析器说起谈谈 npm 包管理工具的运转原理

6. CSS 架构形式之 BEM 在组件库中的实践

7. 组件完成的根本流程及 Icon 组件的完成

8. 为什么组件库或插件需求界说 peerDependencies