距离 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 正式发布!的更多相关文章

  1. Angular v6 正式发布

    Angular 6 正式发布 Angular 6 已经正式发布了!这个主要版本并不关注于底层的框架,更多地关注于工具链,以及使 Angular 在未来更容易快速推进. 作为发布的一部分,我们同步了主要 ...

  2. Angular4.0.0正式发布,附新特性及升级指南

    本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...

  3. Ng-Matero V10 正式发布!

    Angular v10 在六月下旬就悄无声息的发布了,虽然 v9 的发布延期了两个月,但是 v10 并没有受影响,仍然如期而至. 相比 v9 的重量级发布,v10 并没有颠覆性的变化,主要还是 bug ...

  4. 微软.NET Core RC2正式发布,横跨所有平台

    .NET官方博客宣布了<Announcing .NET Core RC2 and .NET Core SDK Preview 1>,正式如期发布了.NET Core RC2, 现在可以放心 ...

  5. 基于DDDLite的权限管理OpenAuth.net 1.0版正式发布

    距离上一篇OpenAuth.net的文章已经有5个多月了,在这段时间里项目得到了很多朋友的认可,开源中国上面的Star数接近300,于是坚定了我做下去的信心.最近稍微清闲点,正式推出1.0版,并在阿里 ...

  6. 【码在江湖】前端少侠的json故事(中)ng的json

    ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...

  7. AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!

    文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...

  8. ionic的常用命令总结以及正式发布的准备

    常用命令: npm install -g ionic cordova(需要安装node) ionic start cutePuppyPics --v2(建app cutePuppyPics app名字 ...

  9. phpcms V9 整合 Discuz! X2 教程

    整合原理: UCenter 作服务端:phpsso 与 Discuz! 分别作 UCenter 的客户端应用:phpsso 与 Discuz! 通过 UCenter 发生交互. phpcms 通过 p ...

随机推荐

  1. JAVA中String类以及常量池和常用方法

    一.String类的定义 String类特点:String 代表字符串.java程序中所有的字符串文字(例如:"abc")都被实现为String类的子类 String类特点:长度不 ...

  2. c/c++ main 函数命令行参数的使用

    C程序最大的特点就是所有的程序都是用函数来装配的.main()称之为主函数,是所有程 序运行的入口.其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的是有参函数,则参数在调用 ...

  3. overflow属性的应用

    在使用JQueryUI chosen插件的时候,由于页面布局的原因,下拉列表框超出div范围,图形效果严重变形,一点解决的思路都没有,最后请教公司前端,瞬间解决,原来使用CSS 中的overflow属 ...

  4. python 组件

    组件:JQueryUI.EasyUI.BootStrap 每一个框架都要学习它们的规则.

  5. Ionic3学习笔记(十五)自定义 tab icon

    本文为原创文章,转载请标明出处 美工做了一套 icon,自然是要用的.将 icon copy 到 assets 文件夹下. 例如 .icon-ios-home-custom 为 iOS icon 选中 ...

  6. 吴裕雄--天生自然 R语言开发学习:基本图形

    #---------------------------------------------------------------# # R in Action (2nd ed): Chapter 6 ...

  7. java连接sqlserver数据简单操作

    首先我们下载微软的JDBC驱动包 https://www.microsoft.com/en-us/download/details.aspx?id=11774 下载好后我们打开如下图 点击Unzip ...

  8. ajax学习相关

    choices参数 当存在某个字段的值只有有限的几个时,如性别(只有男.女),婚否(已婚.未婚)等,这种情况,我们可以用数字来代替这些中文字符,可以减轻数据库的负担,这时,就需要用到choices参数 ...

  9. MySQL5.7主从复制slave报Last_Errno: 1146错误解决

    前提:由于slave磁盘未及时扩容原因导致磁盘即将写满,为了不影响业务将slave实例里一个10G的库drop了(项目前期建的库,数据现在已不使用了),然后又drop了master上的该库(对于大库建 ...

  10. AWS CloudFront / 亚马逊CDN使用教程

    步骤: 1. 打开CloudFront服务之后,首先需要选择分发类型.分发类型分为一般的静态文件分发和流媒体分发,即Web和RTMP,我的站点即选择Web类型. 2. CDN回源设定. a. 首先要填 ...