Angular 已成为广受欢迎的前端框架。去年9月份,期待已久的 Angular2 的正式版发布之后,Angular 又迎来了新一轮热潮。伴随着 Angular 这一路走来,Wijmo 一直都是第一个全面支持各种版本 Angular 的JS控件库。那么,Wijmo 是怎么做到紧跟 Angular 步伐的呢?
Angular1时代
Angular1 支持 MVC 或 MVVM 模式,提供模块化、双向数据绑定、语义化标签、依赖注入等等,大大的简化了前端应用程序的开发。Angular1 一发布就引起了强烈的关注,尤其是它首次提出的“双向数据绑定”的概念受到了众多开发者的喜爱。
早在2012年,Wijmo 就响应客户的呼声,发布了支持 Angular1 的版本,使得 Wijmo 成为第一个全面支持 Angular1 的控件库。
Angular2的Alpha版
随着 Web 技术的不断发展,为了解决 Angular1 中的问题,Google 决定开发 Angular2。Angular 2 不是 Angular 1 的一次升级,而是一个全新的、不同的、更高级的框架。
这时,Wijmo 团队就决定率先支持 Angular 2,因为支持 Angular2 已是众望所归。这使得开发人员很容易在在他们的 Angular2 应用中集成 Wijmo 控件。
Wijmo 控件是纯 JavaScript 的,这也使得对 Angular 2 的支持更容易些,产品组可以为支持 Angular 2 进行很简单的包装,这样 Wijmo 的 UI 控件也可以脱离 Angular2 组件包装而独立工作。这是一个很大的付出,但是 Wijmo 做到了对 Angular2 的率先支持。
Angular2的Beta版
历经了55个 alpha 版本之后,2015年12月份,Angular 发布了 beta 版。意味着 Angular2 已经稳定。Beta 版还是给开发者们提供了一个坚实的框架来构建他们的应用程序。
为了率先支持 Angular,Wijmo 开发团队和 Angular 开发团队展开了合作,Angular 团队帮 Wijmo 解决了一些严重的问题。对Wijmo来说这是一个非常有趣的转变,从这个时候开始Wijmo就已经与Angular2保持了高度一致。2016年3月份Wijmo产品经理Chris采访了Angular的负责人Brad Green,一起畅谈Angular相关的话题,也见证了Wijmo和Angular的密切合作。
Angular2的RC版
2016年5月的NG CONF(Angular大会)在犹他州盐湖城举行,Angular团队结束了Angular2的beta状态,将其推进到了发布候选(Release Candidate)阶段。大会期间Angular团队成员登台,深入介绍了Angular 2,包括新的离线模板编译器,Angular CLI等。在第一天的会议上,Brad也介绍了支持Angular2的组件库Wijmo。
2016 Angular大会(NG CONF),Brad Green介绍Wijmo
Angular2正式版
2016年9月15日,这对于Angular2来说是一个重要的日子,Angular2正式版发布了,在业界引起广泛关注。很多人认为Angular 2正式版有很多颠覆性的变化,是革命性。Angular 2系统架构中的核心概念包括模块、组件、服务、模板、数据绑定和依赖注入。
Wijmo在Angular2发布几个小时后就发布了支持Angular2正式版本的Wijmo。Wijmo为每一个UI控件都提供了Angular 2 组件。所有Angular 2组件都提供了完全声明性标记。对有需要的属性提供了双向绑定的支持,还对定制绑定和一些组件提供了附加功能,比如对FlexGrid中的单元格模板,可以允许用标签指明单元格的内容。Wijmo的Angular 2组件被封装为模块并且可以在Angular 2应用中作为NPM包被使用。遵循Angular 2团队设置的模式,在Angular2中使用Wijmo组件会感到非常熟悉。
一切的合作,都以“开放”为基础
Wijmo率先支持Angular2取得成功后,不少媒体采访到Wijmo的产品经理Chris,试图探寻Wijmo和Angular 能密切合作的奥秘,归纳起来,主要是以下两点:
“首先,Angular 2团队的开发和路线是十分开放的,这也就保证了我们可以紧跟他们的脚步。其次,当我们遇到障碍时,Angular 2团队也很乐于为我们提供支持。我们和Angular团队建立了良好的友谊。我们也很享受和他们团队一起工作。我很感激他们的开放和支持。“
事实上,在提供对Angular 2的支持时,也遭遇了一些挑战。最大的挑战就是需要提供深度集成。由于Wijmo创建了包装,还需要解决如何平衡Angular 2组件的作用和声明性标记,所以我们编写了大量的代码,来促使我们的控件能够完全的用标记的方式配置,还创建了具有Angular特性的功能,比如FlexGrid中的单元格模板。这允许客户编写自定制的标记,在表格的每一列中使用。
为了做到这样,产品组需要深度理解Angular是如何工作的,同时必须要使用其内置的APIs。我们和Angular 2团队一起工作,使用公共APIs,解决了这个问题。事实上,他们也增加了一些东西供我们使用。
无论过程多么艰辛,Wijmo 做到了对Angular 率先并且完美的支持,这一切就基于“开放”,两个产品组开放合作的心态,以及产品本身在开放和路线上的开放性。