Vite 中的 Element Plus 和 Icon 图标:按需引入的最佳实践

安装

powershell 复制代码
npm i element-plus @element-plus/icons-vue
npm i -D unplugin-auto-import unplugin-vue-components unplugin-icons

修改

修改您的 vite.config.ts 文件如下:

ts 复制代码
import path from 'path'
import { defineConfig } from 'vite'
import Vue from '@vitejs/plugin-vue'
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

const pathSrc = path.resolve(__dirname, 'src')

export default defineConfig({
  resolve: {
    alias: {
      '@': pathSrc,
    },
  },
  plugins: [
    Vue(),
    AutoImport({
      // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
      imports: ['vue'],
      resolvers: [
        // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式)
        ElementPlusResolver(),
        // 自动导入图标组件
        IconsResolver({
          prefix: 'Icon',
        }),
      ],
      dts: path.resolve(pathSrc, 'auto-imports.d.ts')
    }),
    Components({
      resolvers: [
        // 自动注册图标组件
        IconsResolver({
          enabledCollections: ['ep']
        }),
        // 自动导入 Element Plus 组件
        ElementPlusResolver()
      ],
      dts: path.resolve(pathSrc, 'components.d.ts')
    }),
    Icons({
      autoInstall: true
    })
  ]
})

Element Plus使用

Element Plus组件和方法无需显式引入,直接使用即可。否则,可能会导致样式丢失。如果在使用方法时出现类型错误,可以尝试保存并编译项目,插件会自动将类型写入 auto-imports.d.ts 文件,从而避免错误。

Icon图标的使用

  • 在按需引入图标时,模板 <template></template>不应 使用驼峰命名,而应改为使用短横线 - 命名,并在图标名称之前加上 i-ep- 前缀。
html 复制代码
<template>
  <el-icon>
    <!-- 原来是:<CircleCheckFilled /> -->
    <i-ep-circle-check-filled />
  </el-icon>
</template>
  • 有时候,我们需要使用 v-for 来动态绑定图标。在 <script setup lang="ts"></script> 中,使用驼峰命名并加上 IconEp 前缀。请注意,这不是一个字符串,而是一个对象。在模板 <template></template> 中,使用 <component :is="item.icon" /> 进行绑定。
html 复制代码
<template>
  <el-icon v-for="item in menu" :key="item.name">
    <component :is="item.icon" />
  </el-icon>
</template>
<script setup lang="ts">
const menu = [
  {
    name: '增',
    icon: IconEpPlus
  },
  {
    name: '改',
    icon: IconEpEditPen
  },
  {
    name: '删',
    icon: IconEpDelete
  }
]
</script>

参考链接

相关推荐
徐小夕3 小时前
花了一周时间,我们开源了一款PDF编辑SDK,支持在线批注+脱敏
前端·vue.js·github
前端Hardy3 小时前
NW.js v0.109.1 最新稳定版发布:被遗忘的桌面开发神器?启动快 3 倍,内存省 70%!
前端·javascript·vue.js
踩着两条虫3 小时前
AI驱动的Vue3应用开发平台 深入探究(十四):扩展与定制之插件系统开发指南
vue.js·人工智能·低代码·重构·架构
Jay叶湘伦4 小时前
【极简】用 Vue 写一个 ChatGPT 前端应用,支持连续对话、Markdown 渲染与本地记忆
前端·vue.js·chatgpt
pengles5 小时前
基于RuoYi-Vue-Plus项目实现移动端项目
java·vue.js·uni-app
Traced back6 小时前
[特殊字符] Vue3 常用指令大全
前端·javascript·vue.js
wuhen_n7 小时前
《Vue3+TS+Vite 高效编程与优化实践》专栏收尾
前端·javascript·vue.js
小雨cc5566ru7 小时前
基于Nodejs+vue+ElementUI的大学生课程排课管理系统设计
前端·vue.js·elementui
qq_8406122337 小时前
Nodejs+vue+ElementUI框架的家政服务评价系统 保洁员预约系统的设计与实现
前端·vue.js·elementui
计算机应用技术三班-欧婷7 小时前
ElementUI从入门到实战全攻略
前端·vue.js·ui