【庖丁解牛】vue-element-admin前端CRUD通用操作组件详解

简介: 【庖丁解牛】vue-element-admin前端CRUD通用操作组件详解

一、背景


vue-element-admin框架之所以能够快速定制应用,得益于其通配的CRUD操作,属性配置多样化且个性化,能够满足绝大部分开发需求,也方便了代码生成


可以深入学习重点源文件是:src/components/Crud/crud.js,一共863行代码,以及下图中其它四个vue组件,形成了对通用CRUD操作的高级封装。

1666275360201.jpg


来一段该文件的历史:


在该文件之前有一个老版本的文件,在src/mixins文件夹下。有4处使用的地方,

1666275370448.jpg

在源码版本记录中观察到:


  1. 在2019年12月9日老版本的文件停止更新了,重新添加了src/components/crud/crud.js以及其它组件,包括表单、分页、搜索框、表格;
  2. 在2019年12月12日更改了现在的名字,并以此为基础进行迭代。

1666275408176.jpg


二、文件一览


共计9个函数,最重要的就是CRUD(options)函数,封装了配置项、方法、钩子函数


1666275432756.jpg

  1. CRUD(options)
  2. callVmHook(crud, hook) 调用钩子函数
  3. mergeOptions(src, opts) 合并配置项,将传入的参数合并到当前实例中
  4. presenter(crud) 生成crud
  5. header() 头部
  6. pagination() 分页
  7. form(defaultForm) 表单
  8. crud(options = {})


三、配置项


默认配置项有:

1666275479817.jpg


四、方法


4.1 普通方法

1666275500694.jpg


4.2 钩子函数

1666275517926.jpg

钩子函数应该说是做的很精细,包含各个用户操作的事件。


钩子函数与vue生命周期的执行顺序应该是我们最关注的,因为事件的起始影响着编程的思路。

image.png


五、小试牛刀


  • 编写后台接口
  • 引入各个组件和数据API接口函数
  • 声明默认表格对象defaultForm

该对象对应着表格要显示的数据列

  • 定义函数cruds()

该函数返回第二节中的CRUD(options)实例,参数options是一个可配置对象,根据需求更改配置元素的值。

  • 混入对象

通过vue混入属性,将通用CRUD暴露的组件函数拿过来

mixins: [presenter(), header(), form(defaultForm), crud()]
  • 请求后台数据

通过钩子函数CRUD.HOOK.beforeRefresh


六、拨云见雾


通用组件怎么运行起来的?

离不开assign,vm.$option,callVm


相关文章
|
3天前
|
存储 前端开发 JavaScript
前端框架与库 - React基础:组件、Props、State
【7月更文挑战第12天】React是JavaScript库,专注UI构建,基于组件化。组件是UI模块,可函数式或类定义。Props是组件间安全传递数据的只读参数,用defaultProps和propTypes保证正确性。State则是组件内部可变数据,用于驱动更新。使用setState()确保正确变更和渲染。了解并妥善处理这些概念是高效React开发的基础。
|
4天前
|
JavaScript
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
16 6
|
9天前
|
JavaScript
vue3 【提效】自动注册组件 unplugin-vue-components 实用教程
vue3 【提效】自动注册组件 unplugin-vue-components 实用教程
17 1
|
10天前
|
JavaScript API
vue3【实用教程】组件(含父子组件传值 defineProps,自定义事件 defineEmits,defineProps,插槽 slot,动态组件 :is 等)
vue3【实用教程】组件(含父子组件传值 defineProps,自定义事件 defineEmits,defineProps,插槽 slot,动态组件 :is 等)
19 1
|
11天前
|
前端开发
化学元素周期表1.0Vue前端页面版本
化学元素周期表1.0Vue前端页面版本
|
12天前
|
JavaScript 编译器
|
12天前
|
JavaScript 前端开发 API
|
4天前
|
JavaScript 前端开发 数据安全/隐私保护
【vue】 前端vue2 全局水印效果
【vue】 前端vue2 全局水印效果
6 0
|
4天前
|
JavaScript 前端开发 数据安全/隐私保护
vue 前端 邮箱、密码、手机号码等输入验证规则
vue 前端 邮箱、密码、手机号码等输入验证规则
12 0
|
4天前
|
前端开发 JavaScript
Vue前端渲染blob二进制对象图片的方法
Vue前端渲染blob二进制对象图片的方法
9 0