Element UI使用指南 - Vue组件库最佳实践
Element UI 组件库使用指南
TIP
Element UI 是饿了么前端团队开发的 Vue 组件库,广泛应用于后台管理系统开发。
安装配置
npm 安装
# Vue 2 版本
npm install element-ui
# Vue 3 版本使用 Element Plus
npm install element-plus
完整引入
// main.js
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
按需引入(推荐)
npm install babel-plugin-component -D
// babel.config.js
module.exports = {
plugins: [
["component", {
"libraryName": "element-ui",
"styleLibraryName": "theme-chalk"
}]
]
}
// 按需引入组件
import { Button, Table, Form } from 'element-ui'
Vue.use(Button)
Vue.use(Table)
Vue.use(Form)
常用组件
表格 Table
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="日期" width="180" />
<el-table-column prop="name" label="姓名" width="180" />
<el-table-column prop="address" label="地址" />
<el-table-column label="操作" width="200">
<template slot-scope="scope">
<el-button size="mini" @click="handleEdit(scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ date: '2025-01-15', name: '张三', address: '北京市' },
{ date: '2025-01-14', name: '李四', address: '上海市' }
]
}
},
methods: {
handleEdit(row) {
console.log('编辑', row)
},
handleDelete(row) {
this.$confirm('确定删除吗?', '提示', {
type: 'warning'
}).then(() => {
console.log('删除', row)
})
}
}
}
</script>
表单 Form
<template>
<el-form :model="form" :rules="rules" ref="formRef" label-width="80px">
<el-form-item label="用户名" prop="username">
<el-input v-model="form.username" placeholder="请输入用户名" />
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="form.password" type="password" placeholder="请输入密码" />
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" placeholder="请输入邮箱" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
<el-button @click="resetForm">重置</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
form: {
username: '',
password: '',
email: ''
},
rules: {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ min: 3, max: 20, message: '长度在 3 到 20 个字符', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' }
],
email: [
{ required: true, message: '请输入邮箱', trigger: 'blur' },
{ type: 'email', message: '请输入正确的邮箱格式', trigger: 'blur' }
]
}
}
},
methods: {
submitForm() {
this.$refs.formRef.validate(valid => {
if (valid) {
console.log('提交成功', this.form)
}
})
},
resetForm() {
this.$refs.formRef.resetFields()
}
}
}
</script>
对话框 Dialog
<template>
<div>
<el-button @click="dialogVisible = true">打开对话框</el-button>
<el-dialog title="编辑用户" :visible.sync="dialogVisible" width="500px">
<el-form :model="form" label-width="80px">
<el-form-item label="姓名">
<el-input v-model="form.name" />
</el-form-item>
<el-form-item label="电话">
<el-input v-model="form.phone" />
</el-form-item>
</el-form>
<span slot="footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleSave">保存</el-button>
</span>
</el-dialog>
</div>
</template>
实用技巧
全局配置
// 设置全局配置
Vue.use(ElementUI, {
size: 'small', // 组件默认尺寸
zIndex: 3000 // 弹窗层级
})
消息提示
// 成功提示
this.$message.success('操作成功')
// 错误提示
this.$message.error('操作失败')
// 确认框
this.$confirm('确定删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// 确认操作
}).catch(() => {
// 取消操作
})
表格分页
<template>
<div>
<el-table :data="currentPageData">
<!-- 表格列 -->
</el-table>
<el-pagination
@current-change="handlePageChange"
:current-page="currentPage"
:page-size="pageSize"
:total="total"
layout="total, prev, pager, next"
/>
</div>
</template>
<script>
export default {
data() {
return {
currentPage: 1,
pageSize: 10,
total: 100
}
},
methods: {
handlePageChange(page) {
this.currentPage = page
this.fetchData()
}
}
}
</script>
相关链接
如有问题,欢迎在评论区留言!
Powered by Waline v2.15.8
