
很多教程一上来就让在main.js里写 import ElementPlus from element-plus 然后 app.use(ElementPlus) 。这招简单粗暴但等于把 100 多个组件全注册了哪怕你只用了一个按钮。官方其实早就给了按需加载的方案只是配置起来踩坑无数。今天我就用自己反复掉坑再爬出来的经验把最稳妥、最省心的自动按需导入方式给你盘清楚。 环境准备 编辑器配置先保证 Vue3 脚手架就位。我用 Vite真心快。在终端敲pnpm create vuelatest一路回车项目秒建。然后打开 VS Code这几个插件先装上能省一半命Vue - Official原 Volar模板语法高亮、类型检查没它写 Vue3 像近视没戴眼镜。ESLint Prettier代码风格统一强迫症福音。Element Plus Snippets敲几个字母就出组件代码块懒人必备。这里可别偷懒插件装完就不管了。记得在项目根目录的 .vscode/settings.json 里配好格式化不然同事的代码风格能让你血压飙升。干脆把我的自用配置贴出来直接复制就能用。前提是你项目里已经装了 ESLint 和 Prettier 依赖比如 eslint、prettier、eslint-plugin-vue、vue/eslint-config-prettier 这些VS Code 也装了对应的插件。{ // 保存时自动格式化 editor.formatOnSave: true, // 默认用 Prettier 格式化 editor.defaultFormatter: esbenp.prettier-vscode, // Vue 文件也交给 Prettier [vue]: { editor.defaultFormatter: esbenp.prettier-vscode }, // ESLint 检查哪些文件 eslint.validate: [ javascript, typescript, vue ], // 保存时自动修复 ESLint 报的错 editor.codeActionsOnSave: { source.fixAll.eslint: explicit } }⚠️ 踩坑提醒千万别同时开多个格式化器我之前就是 Vetur 没禁掉和 Prettier 打架一保存代码格式反复横跳差点砸键盘。那行 source.fixAll.eslint 设成 explicit 比 true 稳能避免偶发的保存卡死。另外如果发现 JS 文件没反应记得把 [javascript] 也加上对应的默认格式化器。 重点来了自动按需导入告别手写 import你可能会问“我用unplugin-element-plus不就行了” 是但不全。最佳实践是三件套搭配使用让组件、API、样式全自动按需加载。先安装pnpm install -D element-plus unplugin-vue-components unplugin-auto-import unplugin-element-plus然后在 vite.config.ts 里这样配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 import ElementPlus from unplugin-element-plus/vite export default defineConfig({ plugins: [ vue(), AutoImport({ resolvers: [ElementPlusResolver()], }), Components({ resolvers: [ElementPlusResolver()], }), ElementPlus({ useSource: true, // 这行很关键确保样式按需加载 }), ], })配完这三者你甚至不用在组件里写 import { ElButton } from element-plus 直接 el-button 就能用API 如 ElMessage 也无需引入直接调用丝般顺滑。官方文档虽然提到了 unplugin-vue-components 但根据我踩坑经验不加 unplugin-element-plus 的 useSource 选项部分组件样式可能会丢失尤其是动态创建的组件比如 ElMessage 。️ 实战搭一个表单页看看效果咱们写个极简的登录表单感受下组件直接用有多爽template el-form :modelform label-width80px el-form-item label用户名 el-input v-modelform.username / /el-form-item el-form-item label密码 el-input v-modelform.password typepassword / /el-form-item el-form-item el-button typeprimary clicksubmit登录/el-button /el-form-item /el-form /template script setup import { reactive } from vue // 注意ElMessage 已经自动导入直接调用即可 const form reactive({ username: , password: }) const submit () { ElMessage.success(提交成功) } /script看看没有一处 import Element Plus 的东西全都自动按需加载。打包体积肉眼可见地降下来了。⚠️ 再说个容易翻车的点图标怎么用是不是以为图标跟以前一样直接用el-icon-edit /别天真了。Element Plus 从某个版本开始把图标库拆成了单独的element-plus/icons-vue。自动导入插件并不会自动帮你导入图标组件你需要手动从包里引入你需要的那几个图标同样需要先安装pnpm install -D element-plus/icons-vue然后在组件中按需导入需要的图标import { Edit, Delete } from element-plus/icons-vue然后在模板里使用el-button typeprimary el-iconEdit //el-icon编辑 /el-button效果长这样好在图标组件本身很小手动引入反而更清晰。官方给出的示例里是在main.ts里一次性注册所有图标这个就看个人喜好了import * as ElementPlusIconsVue from element-plus/icons-vue const app createApp(App) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) }另一个坑是表单验证必填项忘记加 prop很多人被卡住千万记得 el-form-item 上写 propusername 。 进阶思考主题定制与 CSS 变量Element Plus 基于 CSS 变量改主题超级简单。你可以在全局样式里覆盖变量:root { --el-color-primary: #ff6b6b; }所有组件的主色调瞬间变红。如果项目需要深度定制还可以配合 unplugin-element-plus 的 importStyle: sass 选项从 SCSS 源码级修改不过这就进阶了咱们改天细聊。