本节介绍如何调试 Vue 生态的 Element Plus 组件源码。
2024-2026 更新:原版使用的是 Element UI(Vue 2),现已更新为 Element Plus(Vue 3)。
npm create vue@latest element-debug
cd element-debug
npm install
npm install element-plus在 App.vue 中使用 Element Plus 的 Button 组件:
<template>
<el-button type="primary" @click="handleClick">Click me</el-button>
</template>
<script setup>
import { ElButton } from 'element-plus'
function handleClick() {
console.log('clicked')
}
</script>2024-2026 更新:推荐使用 Vue DevTools Next(Vite 插件形态)来定位组件源码。
vite-plugin-vue-devtoolsvite.config.ts 中引入插件Element Plus 的 ES 模块也自带了 sourcemap:
Cmd+P 搜索 button如果无法找到组件文件,可以通过事件断点进入:
关键源码位置:
| 你想了解的 | 文件路径 |
|---|---|
| Button 组件实现(编译产物,附带 sourcemap) | element-plus/es/components/button/src/button.vue_vue_type_script_setup_true_lang.mjs |
| Form 表单逻辑 | element-plus/es/components/form/ + async-validator |
| Table 表格逻辑 | element-plus/es/components/table/ |
| 虚拟列表 | element-plus/es/components/virtual-list/ |
| CSS 变量 | element-plus/es/theme/ |
2025-2026 更新:Element Plus 2.10 新增了 Splitter 分割面板 组件(
es/components/splitter/),2.11 起ElMessage支持独立的placement配置、ElDrawer支持resizable拖拽调整宽度。调试新组件时可直接在对应包目录下打断点:
es/components/splitter/src/— 容器拖拽与折叠逻辑(v-model双向绑定、collapsible等)es/components/message/src/—placement定位与多条消息堆叠逻辑es/components/drawer/src/—resizable拖拽尺寸变化逻辑
Element Plus 使用 CSS 变量实现主题定制:
:root {
--el-color-primary: #409eff;
--el-border-radius-base: 4px;
}调试主题变量的计算逻辑:
2024-2026 新增:Vue DevTools Next 提供了丰富的调试能力。
选中组件后可以看到:
记录组件事件、路由变化、Pinia 状态变化的时间线,帮助理解组件的生命周期和状态变化。
可视化组件依赖关系图,帮助理解组件之间的嵌套关系。