Angular 团队最近发布了 Angular 1.5 的正式版,该版本实现了一次重大的升级,它让仍在使用 1.X 版本的开发者将能够更容易地过渡到 Angular 2 的开发。
Pete Bacon Darwin 在此次发布声明的博客文章中写道,这次发布的目的是“改进Angular 2 的升级路径。我们在这次发布中引入了一些新的特性,让开发者编写的Angular 1 应用更接近于在Angular 2 中应用的结构。”
此次发布中,新的module.component() 辅助方法是向Angular 2 进行过渡的最大变更。通过使用该方法,开发者就不必再遵循传统的directive 定义对象风格编写directive 了。如果读者已经熟悉Angular 2 的写法,就应当注意到这种相似性。在文章中,作者通过一个示例表现了定义一个新component 的方法:
myModule.component('myComponent', { template: '<h1>Hello {{ $ctrl.getFullName() }}</h1>', bindings: { firstName: '<', lastName: '<' }, controller: function() { this.getFullName = function() { return this.firstName + ' ' + this.lastName; }; } });
在 component 出现之前,开发者通常只能使用 directive,或是通过对 controller 的非常规使用才能够实现某些场景。但这并不是说 component 就将完全取代 directive 的作用了,比方说 component 就无法用于操作 DOM,并且所有的 component 都必须通过自定义的 HTML 元素激活,而不支持通过元素的属性触发。按照以上方式定义的 component 可通过以下代码使用:
<my-component first-name="'Alan'" last-name="'Rickman'"></my-component>
新的 component 指南对于传统的 directive 与 component 之间的区别提供了更完整的说明。
- 单向绑定
- 生命周期钩子
- 绑定至必需的 directive
- 支持多个 slot 的 transclusion
- 默认 transclusion 内容
目前在使用 1.4 版本的开发者可以阅读迁移指南以了解迁移时需要进行哪些必要的变更,因为 1.5 版本中引入了一些破坏性的变更。
在可预见的一段时间内,1.5 版本应当是最大的一次变更了。当 InfoQ 向 Bacon Darwin 问及 1.X 版本将何去何从时,他是这样回答的:
我们还没有开始计划 Angular 1 的下一次发布周期。由于离 Angular 2 正式发布的日期已经越来越近了,因此如果我们继续开发 Angular 1,那么也会尽量使它更接近于 Angular 2。如果为了实现这一点而必须引入破坏性的变更,那么可以预计 1.6 版本的出现。同时,我们还将继续 Angular 1.5.x 版本的开发,提供 bug 的修复以及一些较小的特性。总之,这与我们让 Angular 1.X 更易于迁移至 Angular 2 的目标并不冲突。
新的 component router 特性应当在本周的稍晚时间发布。
评论