基于 Vite + Vue3 项目中三种引入 Element Plus 方式的对照说明
创始人
2025-05-31 16:37:16

方式一:手动完整引入(不推荐)

只需要在 main.js 里面引入并配置即可:

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// 引入组件和样式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'const app = createApp(App)// 注册
app.use(ElementPlus)
app.mount('#app')

这样做的好处是简单方便,但问题也很明显,那就是打出来的包是包含了所有组件源代码和样式代码的,导致 chunk 包的体积很大,而且相应的打包时间也就会很长,显然对于项目优化来说是很不友好的,所以这是最不推荐的引入方式,实际打包后的文件体积如下:
在这里插入图片描述

方式二:手动按需引入(相对推荐)

先在 main.js 里面进行配置:

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import { ElButton, ElAlert } from 'element-plus'const app = createApp(App)app.use(ElButton)
app.mount('#app')

还需要先安装插件:

npm i unplugin-element-plus -D

然后在 vite.config.js 里面配置:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ElementPlus from 'unplugin-element-plus/vite'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),// unplugin-element-plus 用于手动按需引入组件时,自动引入该组件的样式代码ElementPlus()],
})

手动按需引用,打出来的包是只包含了使用了的组件的源代码,其中 ElAlert 只 import 而未使用也会被 tree-shaking 清理掉。配合使用 unplugin-element-plus 这个插件可以做到自动引入组件的样式代码。这种方式的好处是相对简单方便,打出来的包的体积是根据使用了的组件的数量来的,所以使用数量越少相应的体积也就越小,打包时间也会更短,当然每次新增组件引用时都需要在 main.js 里面配置一下会稍显繁杂,相对来说这是比较推荐的。实际打包后的文件体积如下:
在这里插入图片描述

方式三:自动按需引入(最推荐)

需要先安装插件:

npm i unplugin-auto-import unplugin-vue-components -D

然后在 vite.config.js 里面配置:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),AutoImport({resolvers: [ElementPlusResolver()]}),Components({resolvers: [ElementPlusResolver()],}),],
})

只需要上述配置即可,不需要在 main.js 里面做任何其它配置了,使用 unplugin-auto-importunplugin-vue-components 会自动在编译过程中将我们在业务代码里面使用到的组件以按需引入的方式进行引入,包括了组件代码和样式代码,这样的方式对开发者来说是最方便的,同时也保证了代码体积和打包时间上的优化处理,总的来说这是最推荐的方式。实际打包后的文件体积如下:
在这里插入图片描述

相关内容

热门资讯

头歌--第1关:Linux文件... 任务描述 假设系统中存在一个文件File,修改该文件的权限,根据实际需求...
【Spring从成神到升仙系列... 👏作者简介:大家好,我是爱敲代码的小黄,独...
梦见蜈蚣是什么意思,做梦梦见蜈... 梦见蜈蚣是什么意思目录梦见蜈蚣是什么意思做梦梦见蜈蚣什么意思梦见蜈蚣是什么意思,哪里有解释啊梦见蜈蚣...
小区车位比一般是多少,车库配比... 小区车位比一般是多少目录小区车位比一般是多少车库配比是什么小区总户数8200,总车位是1450个,配...
车锁上的lock什么意思,汽车... 车锁上的lock什么意思目录车锁上的lock什么意思汽车上lock是什么意思?车子上“lock标志”...
kirin710是什么处理器,... kirin710是什么处理器目录kirin710是什么处理器海思kirin710是高通多少?骁龙71...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
跟着文档制作cocos第一个游... 背景 近期打算学习一下cocos creator,想着开发自己的游戏,是...
乌干达是什么梗,网络语乌干达什... 乌干达是什么梗目录乌干达是什么梗网络语乌干达什么意思?乌干达是什么梗乌干达是什么梗乌干达是什么梗 ...
车载电子狗怎么用,怎样使用电子... 车载电子狗怎么用目录车载电子狗怎么用怎样使用电子狗怎么使用电子狗求简答车载电子狗怎么使用车载电子狗怎...
梦见偷东西是什么意思,梦见自己... 梦见偷东西是什么意思目录梦见偷东西是什么意思梦见自己偷东西是什么意思?做梦梦见自己偷东西好不好梦见偷...
黄金瞳到底是什么,黄金瞳电视剧... 黄金瞳到底是什么目录黄金瞳到底是什么黄金瞳电视剧什么时候上映?《黄金瞳》的结局是什么?电视剧《黄金瞳...
前端-session、jwt 目录:   (1)session (2&#x...
企业即时通讯怎样为企业实现移动... 对于企业来说,在办公过程中少不了工作人员相互传递信息和数据传输,企业内部...
骑行选择什么自行车 极速百科网... 骑行选择什么自行车目录骑行选择什么自行车骑行选择什么自行车 1. 山地自行车:适合崎岖不平的路...
蓝色都有哪几种,蓝色都有什么颜... 蓝色都有哪几种目录蓝色都有哪几种蓝色都有什么颜色的蓝图片,蓝色都有什么颜色的蓝二年级蓝色有哪些种类蓝...
如何自学游泳要安全的,初学游泳... 如何自学游泳要安全的目录如何自学游泳要安全的初学游泳的人需要准备哪些东西,注意哪些事项?如何自学游泳...
一年级家长的话怎么写评语,一年... 一年级家长的话怎么写评语目录一年级家长的话怎么写评语一年级学生评价手册家长寄语怎么写一年级最佳家长评...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
docker 镜像管理 查看本地镜像 docker images 可以查看本地下载的镜像 docker images [O...
k8s-1.22.15部署ng... 1.介绍 在前面文章中已经提到,Service对集群之外暴露服务的主要方式有两种&#x...
革命烈士寄语怎么写,清明节缅怀... 革命烈士寄语怎么写目录革命烈士寄语怎么写清明节缅怀先烈的寄语有哪些呢?革命烈士寄语怎么写 革命...
5万元以下新车推荐,5万以下买... 本篇文章极速百科给大家谈谈5万元以下新车推荐,5万以下买什么车好,以及5万以下的新车哪款最好对应的知...
真皮沙发翻新一般多少钱?(真皮... 本篇文章极速百科给大家谈谈真皮沙发翻新一般多少钱?,以及真皮沙发翻新一般多少钱一个对应的知识点,希望...
磨皮什么意思(磨皮是啥?) 磨... 本篇文章极速百科给大家谈谈磨皮什么意思,以及磨皮是啥?对应的知识点,希望对各位有所帮助,不要忘了收藏...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
从NVIDIA GTC大会,看... 从NVIDIA GTC 2023这场全球行业盛宴,我们可以解读出AI算力行业的哪些重要...
请问什么是童子,什么是童子 极... 请问什么是童子目录请问什么是童子什么是童子古代 童子是什么意思童子是什么意思?请问什么是童子 ...
中招考试考哪些科目,中招考试考... 中招考试考哪些科目目录中招考试考哪些科目中招考试考几门科目一共多少分?中考有哪些科目中考考几科,都什...
做电商如何做,电商怎样做才能赚... 做电商如何做目录做电商如何做电商怎样做才能赚钱?做的好的电商朋友可以教教我怎么做吗新手小白怎么做跨境...