我对Angular.js有点了解,但我现在想自己教Dart和Angular.dart . 不过,我有点好奇两者之间的差异 . Angular.dart教程specifically says it won't compare the two . 使用过两者的人是否都对差异有所了解?
我对Angular.js有点了解,但我现在想自己教Dart和Angular.dart . 不过,我有点好奇两者之间的差异 . Angular.dart教程specifically says it won't compare the two . 使用过两者的人是否都对差异有所了解?
3 回答
Update #2 (Aug '16) 飞镖版的Angular现在由Dart团队在Github上维护:dart/angular2 on github
Update :AngularDart项目已被封存,并已被Angular2取代 . Angular2是Angular的最新版本,适用于Dart .
下面的原始答案比较了AngularDart和AngularJS 1.x.
AngularDart和AngularJS都由Angular团队维护 . 我们从JS方面获取了大量知识并将其应用于Dart . 我们还采用了大量代码并将其直接移植到Dart世界 .
在技术层面,在Angular的核心:
表达式语言在两个版本之间兼容 . AngularDart解析器起源于JS的直接端口,但一直在发展 . 一个很大的区别是Dart解析器支持多个后端,包括Dart代码生成器 .
DI系统不同 . 在Dart中它是基于类的,在Javascript中它是基于符号的 .
编译器已在Dart版本中完全重写 . 这意味着指令的行为不同,现在修改DOM的“结构指令”,“装饰指令”和组件之间存在区别 .
ng-transclude已经“融入浏览器”,取而代之的是标准的shadow DOM .
指令控制器已合并到组件中
AngularDart中的
指令使用带注释的类声明 . 链接/编译函数替换为apply函数
在AngularDart中,范围通过Dart区域自动消化,消除了范围的需要 . $ apply .
AngularDart有一个属性映射的概念,但还没有回到AngularJS . 这意味着指令应该需要更少的范围 . $ watch甚至是对Scope的依赖 .
可能还有其他差异,但这是一个很好的列表,可以帮助您入门 .
所以第一个区别很明显:
AngularJS
是用JavaScript编写的,而Angular.dart
是用dart编写的 .虽然
Angular.dart
遵循AngularJS
的核心原则,但它似乎是一个新功能发展的游乐场 . 我想核心团队从AngularJS中学到了所有的知识,并尝试为Angular.dart
版本稍微好一些 . 目前似乎在Angular的dart版本中首先实现了很多东西,然后才将它们反向移植到AngularJS
. 例如,他们刚刚添加了一个更轻量级的ng-repeat
版本,最终应该以AngularJS
结尾 .此外,Angular团队最近分享了一些关于Angular 2.0计划的见解 . 我敢打赌,大部分事情将首先落入
Angular.dart
,然后降落在AngularJS
.Update 01/2018
另见What's the difference between Angular 2 TS and Angular 2 Dart?
Update 08/2016
JS和Dart的Angular 2现在是独立项目,并且在某种程度上会有所不同 .
例如,TS RC.5中引入的
NgModule
可能不会降落在Dart中,路由器模块也可能无法直接转换 . 这些是TS中延迟加载所必需的更改 . Dart有一个更简单的延迟加载故事,并且不需要Angular2 for TS中引入的许多更改 .Update
使用Angular 2时,几乎没有差异,因为Angular.dart和Angular.js是从同一TypeScript源自动生成的 . http://techcrunch.com/2015/03/05/microsoft-and-google-collaborate-on-typescript-hell-has-not-frozen-over-yet/
Original
Analog of ngTransclude in Angular.Dart
Angular.dart使用shadowDom,而AngularJs则不使用shadowDom .
AngularJs使用ngTransclude代替 .
What is the difference between ng-app and data-ng-app?
Angular.dart似乎不支持链接问题中讨论的其他前缀 .
Angular.dart与
ng-init
无效 . (另见GitHub issue - port: ng-init)Angular.dart没有
ng-controller
指令(port: ngController)而是使用
@NgController(selector:'[foo-controller]', publishAs:'foo')
Angular.dart不支持
ng-repeat
with maps(ng-repeat with a Map not working)Angular.dart没有
restrict
Has Angular.dart directive an equivalent to AngularJS'srestrict
Misko Hevery AngularJS的创建者和AngularDart团队的成员回答了类似的问题here
本文列出了几个不同之处:ANGULARDART FOR ANGULARJS DEVELOPERS. INTRODUCTION TO THE BEST ANGULAR YET.