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>

参考链接

相关推荐
明教教主张5G4 分钟前
Vue响应式原理(13)-ref实现原理解析
前端·vue.js
kungggyoyoyo37 分钟前
TRAE中国版SOLO模式上线!我用它从0到1开发了一款AI小说编辑器
前端·vue.js·trae
什么时候吃饭1 小时前
vue2、vue3父子组件嵌套生命周期执行顺序
前端·vue.js
低保和光头哪个先来1 小时前
场景2:Vue Router 中 query 与 params 的区别
前端·javascript·vue.js·前端框架
hhcccchh2 小时前
学习vue第七天 从单页面应用(SPA)进化为后台管理系统架构
vue.js·学习·系统架构
sen_shan2 小时前
《Vue项目开发实战》第八章:组件封装--vxeGrid
前端·javascript·vue.js
2***57423 小时前
Vue项目国际化实践
前端·javascript·vue.js
摇滚侠3 小时前
Vue 项目实战《尚医通》,实名认证模块静态的搭建,笔记53
vue.js·笔记
一 乐4 小时前
助农平台|基于SprinBoot+vue的助农服务系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·ecmascript·springboot
新晨4374 小时前
Vue 3 定时器清理的最佳实践
javascript·vue.js