Element Angular 是由知名的 vue 组件库 element 衍生出的 Angular 版本,历经1个月时间的不断打磨与更新,已逐渐完善至30+组件,在继承自 Element 的原版 UI 的同时,也融合 Angular 自有的 API 风格与理念,形成了一套新的桌面组件库。
前端社区在不久之前还有很多人为框架争论,其实这个话题早就有,『但早期争议的怒火延烧到今日,伤口仍未愈合』(DHH) 到如今还在给社区带来伤害,甚至于很多开发者被口诛笔伐,实际上是每个人都不愿见到的。我希望热爱技术的人能够聚集在一起,能面红耳赤的讨论也能以包容的心态学习,发现不同的思想,像广受好评的 ruby 社区一样,影响更多人。
当然将 Element 移植到 Angular 上,并非有这些政治正确的意义,但至少也是从 Vue 生态环境中学习、继承出的产品,让很多技术栈集中的朋友看到一些新玩法,甚至感染其中的一些人,领略新的理念。
说说这个组件库吧。大体我采用了原组件库的设计风格与样式,保持功能实现的不变,但在实现方式与暴露接口的考量中略有斟酌。大家知道 Vue 与 Angular 的思维方式有很大区别,各有所长,如果照搬原有的组件实现方式,虽然经过一些改动和变通仍旧能正常工作,但在 Angular 的使用者眼里却是怪里怪气,谁也不知道它该叫什么名字。为此我用更接近与 NG 的思维方式重新实现了它们,并考量改动了其中一部分 API,甚至于用 Element Angular 重写了文档网站。希望能够还原 UI 的同时带来一个原生原味的 Angular 组件库。
在代码风格上,为保持更高的源码质量也添加了很多 TSLint 规则,尽可能的使用 Angular 原生提供的组件交互方式,几乎没有用到 RxJS —— 这考虑到使用过多的依赖项会使 AOT 编译后的文件更大,而我无法确定用户究竟只需要多少操作符。在文档的示例部分,也展示了该如何启动、引入、使用组件,在我看来,你只需要看几分钟的文档即可快速上手使用它,像使用其他 Angular UI 组件一样的使用它。
最后,这是 Element Angular 趋于稳定的一个版本,预计在这周会发布一个 rc 版本。(文档目前使用 github.com,速度有点跟不上,最好自备上网工具。)据我所知,已经有不少开发者与企业在使用中。(强行劝用...) 对 element 熟悉或本身就是 Angular 的开发者可以关注这个组件库,也欢迎大家一起来丰富、完善它。