Angular 2和Angular 1之间有很多概念和语法上的改变,接下来我们从两个框架的以下方面进行对比:
Angular 1 | Angular 2 |
---|---|
ES 5 | ES 5 |
Typescript | |
Dart |
Angular 1 | Angular 2 |
---|---|
|
|
Angular 1中,我们通过ng-app指令启动应用,同时指定启动的模块(如movieHunter);
而在Angular 2中没有启动指令,我们通过显示调用bootstrap函数来启动应用,将模块以参数的形式传递。
Binding | Angular 1 | Angular 2 |
---|---|---|
Interpolation |
|
|
Properties |
|
|
Events |
|
|
Two-way |
|
|
Angular 2保留Angular 1中的单向绑定(花括号语法),又细分了属性绑定、事件绑定,修改了双向绑定的使用方式。
Angular 1 | Angular 2 |
---|---|
|
|
Angular 1
Angular 2
Angular 2没有了Angular 1中Scope、Controller的概念,Component中定义的属性、方法都以数据绑定的形式绑定到Component模版中。
Angular 2的应用,都是从一个根组件(Root Component)开始,最终,我们的应用能被抽象成一个个组件组成的树。
Angular 1 | Angular 2 |
---|---|
|
|
|
|
|
|
|
|
Angular 2将指令细分为“结构指令”(Structural directives),和“属性指令”(Attribute directives)。
Angular 1 | Angular 2 |
---|---|
|
|
在Angular 1中,我们可以使用“|”符号来过滤或转换数据的展现,比如在这个例子中,我们把title
属性全部改成了大写。
在Angular 2中,仍然使用同样的语法,只不过在这里改了称呼,重新命名为“Pipe”。
Angular 1 | Angular 2 |
---|---|
|
|
Angular 1中,我们可以在Controller等方法中通过名字注入依赖;
而在Angular 2中,我们需要在构造函数中,以参数的形式注入。
Angular 1 | Angular 2 |
---|---|
|
|
在Angular 1中,我们通过定义模块,用来管理我们的Controllers、Services、Directives等;
而Angular 2没有自己的模块,而是使用ES 2015的模块系统,而ES 2015的模块系统是基于文件的,每一个文件就是一个模块。
根据官方说法,Angular 2比Angular 1有了极大的性能提升,而且学习资源也越来越丰富,下面贴两个教育资源地址。