关于antd、element ui与mui三者UI库的使用感想。

前言:

6年的工作经验,让我接触了各种各样的框架,像react、vue、angular、jquery、threejs以及各种组件,不管是大框架还是个人开发的小组件,虽然他们有着各式各样的api,各种花里胡哨的写法,要使用它们都是有共同的方式。

最近在做兼职项目中使用到了mui,全称material UI,是google开源的UI框架,国外的UI框架使用起来和国内的有什么区别呢?

首先是文档上,mui的文档分两部分,第一部分是演示,用于查看组件的效果,把所有可能实现的功能点在几个演示demo上展示,所以mui的演示demo代码会比较复杂,第二部分就是api罗列了,需要点击到另外一个路由上查看,国内的elementUI与antd则不是从简单到复杂都会列举demo,对于新手来说会更友好。

其次,组件上的设计。像一些木偶组件其实实现起来都是差不多的,不过起名,我更喜欢antd的方式,简单易懂,最简单的button,mui要改变其样式得传variant,antd与elementUI则是type,mui与elementUI的table组件要渲染column还要一个一个添加,antd则是把组件封装好,传递一个columns即可。 

最后,像有状态的组件,比如form表单,可能我还是用不习惯mui的写法,对于form表单的封装略显困难,mui的form表单要想封装还得借用三方formik来帮忙实现动态变化,引入第三方后感觉就有些不兼容了,我在使用的过程中也碰到了一些问题,也不清楚是不是自己使用方式有问题。

总结:

mui是国外的框架,可能对于国内的开发来说会有一定的学习成本,反正只要涉及到自己的开发项目,mui绝对不可能是首选

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
你可以使用Ant Design Vue的Table组件和Expandable组件来实现表格嵌套表格的功能。 首先,你需要在你的Vue项目中安装和引入Ant Design Vue和其样式。 然后,你可以使用Ant Design Vue的Table组件来创建你的主表格,并设置Expandable属性为true来启用嵌套表格的功能。 接着,在Table组件的columns属性中,你可以定义主表格的列和嵌套表格的列。对于嵌套表格的列,你可以使用Expandable组件的render属性来自定义每个嵌套行的展示内容。 最后,你可以在Table组件的dataSource属性中设置你的数据,包括主表格和嵌套表格的数据。 下面是一个简单的示例代码: ``` <template> <a-table :columns="columns" :data-source="data" :expandable="expandable"> <template slot="expand" slot-scope="{ record }"> <a-table :columns="nestedColumns" :data-source="record.children"> <template slot="description" slot-scope="{ text }"> <span v-html="text" /> </template> </a-table> </template> </a-table> </template> <script> import { Table, Tag } from 'ant-design-vue'; export default { components: { Table, Tag }, data() { return { expandable: { expandedRowRender: (record) => { return ( <a-table :columns="nestedColumns" :data-source="record.children"> <a-table-column title="Name" dataIndex="name" /> <a-table-column title="Age" dataIndex="age" /> <a-table-column title="Description" dataIndex="description" customRender={(text) => <span v-html="text" />} /> </a-table> ); }, rowExpandable: (record) => record.children.length > 0, }, columns: [ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Tags', key: 'tags', dataIndex: 'tags', customRender: (tags) => ( <span> {tags.map((tag) => ( <Tag color="blue" key={tag}> {tag} </Tag> ))} </span> ), }, { title: 'Action', key: 'action', customRender: (text, record) => ( <span> <a>Invite {record.name}</a> <a-divider type="vertical" /> <a>Delete</a> </span> ), }, ], nestedColumns: [ { title: 'Name', dataIndex: 'name', }, { title: 'Age', dataIndex: 'age', }, { title: 'Description', dataIndex: 'description', customRender: (text) => <span v-html="text" />, }, ], data: [ { key: '1', name: 'John Brown', age: 32, tags: ['nice', 'developer'], children: [ { key: '1-1', name: 'Jim Green', age: 42, description: '<strong>Jim Green Description</strong>', }, { key: '1-2', name: 'Joe Black', age: 32, description: '<strong>Joe Black Description</strong>', }, ], }, { key: '2', name: 'Jim Red', age: 42, tags: ['loser'], children: [ { key: '2-1', name: 'Jim Green', age: 42, description: '<strong>Jim Green Description</strong>', }, { key: '2-2', name: 'Joe Black', age: 32, description: '<strong>Joe Black Description</strong>', }, ], }, { key: '3', name: 'Joe Black', age: 32, tags: ['cool', 'teacher'], children: [], }, ], }; }, }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自动化处理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值