Ng-Matero V9 正式发布!
距离 Ng-Matero 第一版发布已经过去了半年多,该项目获得了越来越多的关注及喜爱,甚至得到了外国友人的赞助。借此项目也认识了很多对 Angular 和 Material 感兴趣的朋友,如今对项目的维护已经不单单是兴趣,更多的是一种责任。
Angular V9 已经在二月份重磅发布,拖沓了一个月,Ng-Matero V9 也终于发布!其中大部分时间耗在了 Material Extensions 的组件开发上。按照计划,Ng-Matero 直接从 0.x 过渡到到了 V9。虽然这是早已计划之内的事情,但是因为很多功能的欠缺,一直犹豫要不要直接发布 V9。最终还是激进了一把,先将版本号对齐,之后再慢慢迭代,毕竟 V9 对于 NG 来说也是一个关键的里程碑。
Ng-Matero: https://github.com/ng-matero/ng-matero
Material Extensions: https://github.com/ng-matero/extensions
再谈 Angular Material
我在之前的文章中狠狠的吹了一波 Angular Material 的设计之美,然而事实是 Angular Material 在设计及实现方面确实非常优秀,从可访问性
、焦点管理
、键盘交互
、CDK
这些方面来看可以说一骑绝尘。
首先感叹一下,Bootstrap 的影响力实在在太大了,目前市面上 90% 的组件库都是以 Bootstrap 为蓝本,我也是 Bootstrap 的忠实粉丝。国内对 Bootstrap 的接受度明显高于 Material Design。其实 Material 和 Bootstrap 一样都可以作为基础库使用,通过修改样式进行风格定制。
唯一需要注意的是,Material Design 与 Bootstrap 最大的不同在于表单交互。Bootstrap 的表单元素相对比较独立,任何第三方表单类组件都可以直接使用。但是在 Angular Material 中就不能如此自由随意,比如在 Angular Material 的表单中使用 ng-select。虽然 ng-select 有 Material 的主题,但是直接使用的话,你会发现没办法展示错误信息。所有第三方表单组件都必须继承 form-field
类才能获得最佳交互体验。
我个人强烈建议将 Angular Material 作为基础库使用,样式方面可以根据喜好定制,实在无法接受 Material 的表单交互的话,也可以搭配 Bootstrap 亲自实现一个表单组件,或者直接引用其它组件库。
扩展组件库
实话说 Angular Material 确实缺少一些比较常用的交互组件,在开发 Ng-Matero 的过程中,顺便开发了一套 Material Extensions 的组件库。这套组件库的组件大致有以下三类:
- 完全独立开发的组件(e.g. alert)
- Angular Material 组件的二次封装(e.g. data-grid)
- 第三方组件的优化及包装(e.g. color-picker)
在开发扩展组件的时候,遇到了很多问题,简单说一下 color-picker 的设计。Material 官网并没有关于 color-picker 的介绍,所以具体用什么形式的交互实现完全由自己探索,最终设计成现在的样子。其中还有很多的技术细节,比如焦点事件处理、判断是否在 ShadowRoot
组件内、浏览器窗口的 blur 交互等。目前 color-picker 在使用方式上设计的并不好,后期将会重构。
关于扩展组件库的详细内容会写一篇专门的文章介绍。如果大家觉得 Material 还有欠缺的组件或者使用不习惯的地方,可以在 GitHub 提 issue。
最后,还是庆祝一下 Ng-Matero V9 的发布吧,如果你喜欢 Angular Material 或者对 Ng-Matero 感兴趣,欢迎与我交流!
Ng-Matero V9 正式发布!的更多相关文章
- Angular v6 正式发布
Angular 6 正式发布 Angular 6 已经正式发布了!这个主要版本并不关注于底层的框架,更多地关注于工具链,以及使 Angular 在未来更容易快速推进. 作为发布的一部分,我们同步了主要 ...
- Angular4.0.0正式发布,附新特性及升级指南
本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...
- Ng-Matero V10 正式发布!
Angular v10 在六月下旬就悄无声息的发布了,虽然 v9 的发布延期了两个月,但是 v10 并没有受影响,仍然如期而至. 相比 v9 的重量级发布,v10 并没有颠覆性的变化,主要还是 bug ...
- 微软.NET Core RC2正式发布,横跨所有平台
.NET官方博客宣布了<Announcing .NET Core RC2 and .NET Core SDK Preview 1>,正式如期发布了.NET Core RC2, 现在可以放心 ...
- 基于DDDLite的权限管理OpenAuth.net 1.0版正式发布
距离上一篇OpenAuth.net的文章已经有5个多月了,在这段时间里项目得到了很多朋友的认可,开源中国上面的Star数接近300,于是坚定了我做下去的信心.最近稍微清闲点,正式推出1.0版,并在阿里 ...
- 【码在江湖】前端少侠的json故事(中)ng的json
ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...
- AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!
文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...
- ionic的常用命令总结以及正式发布的准备
常用命令: npm install -g ionic cordova(需要安装node) ionic start cutePuppyPics --v2(建app cutePuppyPics app名字 ...
- phpcms V9 整合 Discuz! X2 教程
整合原理: UCenter 作服务端:phpsso 与 Discuz! 分别作 UCenter 的客户端应用:phpsso 与 Discuz! 通过 UCenter 发生交互. phpcms 通过 p ...
随机推荐
- JAVA中String类以及常量池和常用方法
一.String类的定义 String类特点:String 代表字符串.java程序中所有的字符串文字(例如:"abc")都被实现为String类的子类 String类特点:长度不 ...
- c/c++ main 函数命令行参数的使用
C程序最大的特点就是所有的程序都是用函数来装配的.main()称之为主函数,是所有程 序运行的入口.其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的是有参函数,则参数在调用 ...
- overflow属性的应用
在使用JQueryUI chosen插件的时候,由于页面布局的原因,下拉列表框超出div范围,图形效果严重变形,一点解决的思路都没有,最后请教公司前端,瞬间解决,原来使用CSS 中的overflow属 ...
- python 组件
组件:JQueryUI.EasyUI.BootStrap 每一个框架都要学习它们的规则.
- Ionic3学习笔记(十五)自定义 tab icon
本文为原创文章,转载请标明出处 美工做了一套 icon,自然是要用的.将 icon copy 到 assets 文件夹下. 例如 .icon-ios-home-custom 为 iOS icon 选中 ...
- 吴裕雄--天生自然 R语言开发学习:基本图形
#---------------------------------------------------------------# # R in Action (2nd ed): Chapter 6 ...
- java连接sqlserver数据简单操作
首先我们下载微软的JDBC驱动包 https://www.microsoft.com/en-us/download/details.aspx?id=11774 下载好后我们打开如下图 点击Unzip ...
- ajax学习相关
choices参数 当存在某个字段的值只有有限的几个时,如性别(只有男.女),婚否(已婚.未婚)等,这种情况,我们可以用数字来代替这些中文字符,可以减轻数据库的负担,这时,就需要用到choices参数 ...
- MySQL5.7主从复制slave报Last_Errno: 1146错误解决
前提:由于slave磁盘未及时扩容原因导致磁盘即将写满,为了不影响业务将slave实例里一个10G的库drop了(项目前期建的库,数据现在已不使用了),然后又drop了master上的该库(对于大库建 ...
- AWS CloudFront / 亚马逊CDN使用教程
步骤: 1. 打开CloudFront服务之后,首先需要选择分发类型.分发类型分为一般的静态文件分发和流媒体分发,即Web和RTMP,我的站点即选择Web类型. 2. CDN回源设定. a. 首先要填 ...