楼主: 陈JJJJJJJ
313 0

[其他] Vue2 + Element UI 零基础入门:5 步搞定基础组件实战 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0138
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-6-7
最后登录
2018-6-7

楼主
陈JJJJJJJ 发表于 2025-12-11 15:29:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

1. 前言:为何选择 Vue2 与 Element UI 搭配开发?

对于刚入门前端的开发者来说,Vue2 是一个非常友好的框架。其语法简洁清晰,学习曲线平缓,配合 Element UI 这类成熟的组件库,可以快速搭建出功能完整、界面美观的应用页面。

Element UI 提供了大量现成的 UI 组件,例如按钮、表单、弹窗、表格等,无需手动编写复杂的 CSS 样式,即可实现专业级的视觉效果。这种组合特别适用于企业后台管理系统、毕业设计项目以及各类数据录入型页面,正是新手最常接触的实际应用场景。

在开始之前,请确保你的电脑已安装 Node.js 环境。可通过命令行输入 node -v 来验证是否安装成功,若能正常显示版本号,则说明环境准备就绪。

2. 第一步:搭建开发环境(附详细截图,避免常见问题)

2.1 使用 Vue CLI 创建 Vue2 项目

推荐使用 Vue CLI 工具来创建项目,因其稳定性高,不易出现依赖冲突或报错问题。

打开终端并依次执行以下命令:

# 1. 全局安装 Vue CLI(已安装可跳过)
npm install -g @vue/cli
# 2. 检查安装是否成功(看到版本号即可)
vue --version
# 3. 创建项目(命名为 vue2-element-demo)
vue create vue2-element-demo

操作提示: 当命令行出现配置选项时,请按如下方式选择:

  • 选择「Manually select features」
  • 使用空格键勾选「Babel、Router(可选)、CSS Pre-processors」
  • 选择「Vue 2.x」作为版本
  • 其余选项保持默认,直接回车跳过

项目初始化完成后,启动服务:

cd vue2-element-demo # 进入项目文件夹
npm run serve # 启动项目

浏览器访问地址:http://localhost:8080,如果看到 Vue 的欢迎页面,表示项目创建成功。

2.2 安装并全局引入 Element UI

2.2.1 安装 Element UI 依赖

在项目根目录下运行以下命令进行安装:

npm i element-ui -S

2.2.2 配置 src/main.js 实现全局注册

进入项目中的 src/main.js 文件,添加以下关键代码,并注意注释说明:

import Vue from 'vue'
import App from './App.vue'
// 引入 Element UI 核心库
import ElementUI from 'element-ui'
// 引入 Element UI 样式(必须加,否则样式失效)
import 'element-ui/lib/theme-chalk/index.css'
Vue.config.productionTip = false
// 全局注册 Element UI(所有组件都能直接用)
Vue.use(ElementUI)
new Vue({
el: '#app',
render: h => h(App)
})

截图建议: 保存修改后的 main.js 完整代码截图,并在图中标注出“引入 Element UI”和“注册 Element UI”的两行代码。

快速验证配置是否生效: 打开 src/components/HelloWorld.vue,将其内容替换为如下测试代码,运行后若能看到蓝色按钮,则说明 Element UI 引入成功:

>
="primary">Element UI 测试按钮
</template>

3. 第二步:五大核心组件实战演练(代码可直接复制使用)

以下所有示例均可在 HelloWorld.vue 中直接替换运行,无需额外配置即可查看效果。

3.1 按钮(Button)——实现基础交互

按钮是用户操作的基础入口,Element UI 提供了多种类型和状态的按钮样式。

核心代码:

<template>
style="margin: 20px;">
不同类型按钮 -->
按钮 primary">主要按钮-button>
-button type="success">成功按钮 danger">危险按钮-button>
禁用按钮 -->
<el-button disabled>禁用按钮</el-button>
="primary" @click="showTip">点击我</el-button>
</div>
{
name: 'HelloWorld',
methods: { showTip() {
// 消息提示(Element UI 自带)
this.$message.success('按钮点击成功!')
}
}
}
</script>

效果展示:

页面中将显示不同颜色风格的按钮,点击“点击我”按钮后会弹出绿色的成功提示消息。

实用技巧: 添加 size="small" 属性可生成小型按钮,例如:type="primary">小按钮

3.2 表单(Form)——完成数据提交与校验功能

通过 Form 组件可轻松构建登录表单,并集成字段验证逻辑。

核心代码(实现用户名与密码登录表单):

<template>
style="margin: 20px; width: 400px;">
:model="formData" 数据 -->
:rules="formRules" 绑定验证规则 -->
ref="formRef" 用于验证) -->
label-width="80px" -->
>
label="用户名" prop="username">
-input v-model="formData.username" placeholder="请输入用户名">
框 -->
-form-item label="密码" prop="password">
formData.password" type="password" placeholder="请输入密码">
重置按钮 -->
<el-form-item>
" @click="submitForm">提交
click="resetForm">重置</el-button>
</div>
</template>
export default {
name: 'HelloWorld',
data() { return {
// 表单绑定的数据
formData: {
username: '',
password: ''
},
// 验证规则(必填、长度限制)
formRules: {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ min: 2, max: 10, message: '用户名长度2-10个字符', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ min: 6, max: 16, message: '密码长度6-16个字符', trigger: 'blur' }
]
}

3.4 弹窗(Dialog)——实现基础模态框交互

Dialog 组件常用于展示临时内容,如确认操作、信息提示等。

核心代码(点击按钮触发弹窗显示):

关键提醒: 控制弹窗的显示与隐藏应通过绑定布尔值变量(如 dialogVisible),并通过事件方法进行切换。

3.5 消息提示(Message)——提供操作反馈

Message 组件用于轻量级的信息提示,适合在用户完成某项操作后给予即时反馈,如“保存成功”、“网络错误”等场景。

4. 第三步:综合实战——构建可查询的数据表格(提升成就感)

将多个组件结合使用,打造一个具备搜索功能的动态表格界面,是后台开发中的典型需求。

核心代码:

<template>
style="margin: 20px;">
不同类型按钮 -->
按钮 primary">主要按钮-button>
-button type="success">成功按钮 danger">危险按钮-button>
禁用按钮 -->
<el-button disabled>禁用按钮</el-button>
="primary" @click="showTip">点击我</el-button>
</div>

效果:

页面呈现带分页和筛选功能的表格,支持数据加载与条件查询,整体界面整洁且交互流畅。

5. 新手必须避开的 5 个常见陷阱

  • 未正确全局注册 Element UI 导致组件无法识别
  • 忘记在 template 中使用标签闭合或属性引号
  • form 表单验证规则未正确绑定 rules 属性
  • dialog 弹窗内表单重置失败,因未调用 clearValidate 方法
  • message 提示重复弹出,未合理控制触发频率

6. 结尾:后续学习方向建议

掌握 Vue2 与 Element UI 的基本使用后,可逐步深入以下领域:

  • 学习 Vuex 进行状态管理
  • 了解 Vue Router 实现页面路由跳转
  • 尝试封装自定义组件以提高复用性
  • 过渡到 Vue3 及 Element Plus,适应现代前端技术栈

3.4 弹窗(Dialog):基础弹窗交互

实现点击按钮触发弹窗显示,核心在于控制弹窗的显隐状态。在 Vue2 中,需使用 :visible.sync 进行双向绑定,不可直接采用 v-model,这是新手容易出错的地方,务必注意。

20px;">
primary" @click="dialogVisible = true">打开弹窗</el-button>
title="我的弹窗"
:visible.sync="dialogVisible" 显示/隐藏(Vue2专用) -->
width="500px"
>
<span>这里可以放表单、提示文字等内容(比如编辑表格数据)</span>
弹窗底部按钮 -->
class="dialog-footer">
="dialogVisible = false">取消 primary" @click="dialogVisible = false">确定</el-button>
</span>
-dialog>
>
<script>

组件默认导出配置如下:

export default {
name: 'HelloWorld',
data() { return {
// 控制弹窗显示(false=隐藏,true=显示)
dialogVisible: false
}
}
}
</script>

3.5 消息提示(Message):反馈信息

消息提示常用于操作后的结果反馈,如成功、警告、错误等场景。常见的四种类型已在以下代码中体现,可直接嵌入按钮事件或表单提交逻辑中调用。

// 成功提示(绿色)
this.$message.success('操作成功!')
// 错误提示(红色)
this.$message.error('操作失败!')
// 警告提示(黄色)
this.$message.warning('注意:这是警告!')
// 普通提示(灰色)
this.$message.info('这是一条提示信息')

4. 第三步:实战整合:查询表格(成就感拉满)

将「表单查询」与「表格展示」功能结合,实现根据姓名关键词筛选用户数据的功能,提升交互实用性。

核心逻辑说明:通过输入框绑定搜索条件,利用计算属性 filterData 对原始数据进行动态过滤,实现精准展示。

20px;">
="searchForm" inline style="margin-bottom: 20px;">
<el-form-item label="姓名">
v-model="searchForm.name" placeholder="请输入姓名查询">
>
type="primary" @click="search">查询-button>
-button @click="reset">重置
-->
:data="filterData" border stripe style="width: 100%;">
prop="id" label="ID" width="80"> ="name" label="姓名" width="120"> ="age" label="年龄" width="80"></el-table-column>
address" label="地址"></el-table-column>
</div>
>
default {
name: 'HelloWorld',
data() { return {
// 原始数据
tableData: [
{ id: 1, name: '张三', age: 20, address: '北京市朝阳区' },
{ id: 2, name: '李四', age: 22, address: '上海市浦东新区' },
{ id: 3, name: '王五', age: 21, address: '广州市天河区' }
],
// 查询条件
searchForm: {
name: ''
}
}
},
computed: {
// 筛选后的数据(输入姓名才过滤,否则显示全部)
filterData() { if (!this.searchForm.name) {
return this.tableData
}
// 模糊查询(包含输入的姓名就显示)
return this.tableData.filter(item => item.name.includes(this.searchForm.name))
}
},
methods: { search() {
this.$message.success('查询成功!')
},
reset() {
this.searchForm.name = '' // 清空输入框
this.$message.info('已重置')
}
}
}

效果描述:

  • 当输入“张”时,表格仅显示“张三”相关信息;
  • 输入“李”后,仅保留“李四”的数据显示;
  • 点击「重置」按钮,恢复展示全部原始数据。

3.3 表格(Table):展示与交互

表格组件用于展示多条结构化数据,支持边框和斑马纹样式,增强可读性。同时集成编辑与删除操作,提升用户交互体验。

}
},
methods: {
// 提交表单
submitForm() { this.$refs.formRef.validate((valid) => { if (valid) {
// 验证通过
this.$message.success('提交成功!')
} else {
// 验证失败
this.$message.error('填写有误,请检查!')
return false
}
})
},
// 重置表单
resetForm() {
this.$refs.formRef.resetFields()
}
}
}
#### 效果:
- 没填内容点击提交,会提示「请输入用户名/密码」;
- 用户名长度不够/密码太短,会提示对应的错误;
- 填写符合规则后提交,会提示成功。
### 3.3 表格(Table):数据展示+操作
#### 核心代码(展示用户数据,支持编辑/删除):
```vue
>
="margin: 20px;">
-table
:data="tableData" 绑定表格数据 -->
border -->
stripe 斑马纹样式 -->
style="width: 100%;"
>
列配置:prop对应数据字段,label对应列名 -->
-column prop="id" label="ID" width="80">
prop="name" label="姓名" width="120">
prop="age" label="年龄" width="80"> ="address" label="地址">
label="操作" width="180">
scope">
-button size="small" type="primary" @click="edit(scope.row)">编辑</el-button>
" type="danger" @click="del(scope.row)">删除
</template>
export default {
name: 'HelloWorld',
data() { return {
// 模拟表格数据
tableData: [
{ id: 1, name: '张三', age: 20, address: '北京市朝阳区' },
{ id: 2, name: '李四', age: 22, address: '上海市浦东新区' },
{ id: 3, name: '王五', age: 21, address: '广州市天河区' }
]
}
},
methods: {
// 编辑按钮
edit(row) {
this.$message.info(`编辑用户:${row.name}`)
},
// 删除按钮
del(row) {
// 确认弹窗
this.$confirm('确定要删除吗?', '提示', { type: 'warning' })
.then(() => {
// 过滤掉要删除的行
this.tableData = this.tableData.filter(item => item.id !== row.id)
this.$message.success('删除成功!')
})
.catch(() => {
this.$message.info('已取消删除')
})
}
}
}
</script>

交互效果说明:

  • 表格默认展示 3 条用户数据,启用边框和斑马纹样式;
  • 点击「编辑」按钮会弹出提示信息;
  • 点击「删除」将触发确认对话框,确认后对应数据项从列表中移除。

5. 新手必避的 5 个坑

样式失效是常见问题之一,可能由类名拼写错误、CSS 作用域限制或未正确引入样式文件导致。建议检查类名是否被覆盖、是否使用了 scoped 属性影响穿透,以及确保相关 UI 库的样式已完整加载。

忘记在 main.js 中引入 import 'element-ui/lib/theme-chalk/index.css',这一步非常关键,必须添加!

表单验证无效?

请检查 prop 属性是否与 formData 中的字段名称完全对应,例如:prop="username" 必须对应 formData.username,否则验证将无法触发。

弹窗无法关闭?

在 Vue2 中,弹窗组件必须使用 :visible.sync 绑定显示状态,不能直接使用 v-model="dialogVisible",这是常见错误之一。

表格未显示数据?

确保 el-table 的 :data 绑定的是一个数组类型的数据源;同时,el-table-column 的 prop 属性需与数组中对象的字段名保持一致,否则无法渲染内容。

# 1. 全局安装 Vue CLI(已安装可跳过)

$message 提示报错?

原因可能是未在 main.js 中注册 ElementUI 插件,务必添加 Vue.use(ElementUI),否则 this.$message 方法将不可用。

今日学习总结与进阶建议

今天我们掌握了五个常用核心组件,能够满足大多数基础开发需求,如表单提交、信息展示和弹窗交互等场景。

接下来可以继续深入学习 Element UI 的其他实用组件,推荐方向包括:分页组件(Pagination)、日期选择器(DatePicker)以及下拉框(Select),这些都将极大提升页面功能完整性。

关于代码实践建议:

初学者建议先从模仿开始,复制示例代码运行并观察效果,然后逐步调整参数,比如修改按钮颜色、替换表格数据内容等,在动手过程中加深理解。待熟练掌握后,再尝试独立编写完整功能模块。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Element 基础入门 MEN Vue LEM

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-22 08:52