我对Angular.js有点了解,但我现在想自己教Dart和Angular.dart。不过,我有点好奇两者之间的区别是什么。 Angular.dart教程specifically says it won't compare the two。使用过两者的人是否都对差异有所了解?
答案 0 :(得分:94)
更新#2(2016年8月) Dular团队现在在Github上维护了Dart版本的Angular:dart/angular2 on github
更新: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已“融入浏览器”,取而代之的是标准的影子DOM。
指令控制器已合并到组件
指令使用带注释的类声明。链接/编译函数替换为应用函数
在AngularDart中,范围通过Dart区域自动消化,消除了范围的需要。$ apply。
AngularDart有一个属性映射的概念,但还没有回到AngularJS。这意味着指令应该需要更少的范围。$ watch甚至是对Scope的依赖。
可能存在其他差异,但这是一个很好的列表,可以帮助您入门。
答案 1 :(得分:16)
所以第一个区别很明显:AngularJS
是用JavaScript编写的,而Angular.dart
是用dart编写的。
虽然Angular.dart
遵循AngularJS
的核心原则,但它似乎是一个新功能发展的游乐场。我想核心团队从AngularJS中学到了所有的知识,并试图为Angular.dart
版本稍微好一些。目前似乎在Angular的dart版本中首先实现了很多东西,然后才将它们反向移植到AngularJS
。例如,他们刚刚添加了一个更轻量级的ng-repeat
版本,最终应该以{{1}}结尾。
此外,Angular团队最近分享了一些关于Angular 2.0的计划的见解。我敢打赌,在AngularJS
进入Angular.dart
之前,这些事情中的大部分将首先落在AngularJS
。
答案 2 :(得分:15)
更新01/2018
另见What's the difference between Angular 2 TS and Angular 2 Dart?
更新08/2016
JS和Dart的Angular 2现在是独立的项目,并且在某种程度上会有所不同。
例如,TS RC.5中引入的NgModule
可能不会落入Dart,路由器模块也可能无法直接转换。
这些是TS中延迟加载所必需的更改。 Dart有一个更简单的延迟加载故事,并且不需要Angular2 for TS中引入的许多更改。
<强>更新强>
使用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/
<强>原始强>
Analog of ngTransclude in Angular.Dart
Angular.dart使用shadowDom而AngularJs不使用
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
地图(ng-repeat with a Map not working)
Angular.dart没有restrict
Has Angular.dart directive an equivalent to AngularJS's `restrict`
Misko Hevery AngularJS的创建者和AngularDart团队的成员回答了类似的问题here
本文列出了一些差异:ANGULARDART FOR ANGULARJS DEVELOPERS. INTRODUCTION TO THE BEST ANGULAR YET.