76

我对 Angular.js 有点了解,但我现在想自学 Dart 和 Angular.dart。不过,我有点好奇两者之间的区别是什么。Angular.dart 教程明确表示不会比较两者。使用过两者的人是否对差异有什么看法?

4

3 回答 3

96

更新 #2(2016 年 8 月) Dart 版本的 Angular 现在由 Github 上的 Dart 团队维护:github 上的 dart/angular2

更新: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 中的指令是用带注释的类声明的。链接/编译函数被替换为应用函数

  • 在 AngularDart 中,范围通过 Dart 区域自动消化,消除了对 scope.$apply 的需求。

  • AngularDart 有一个属性映射的概念,它还没有回到 AngularJS 中。这意味着指令应该需要更少的 scope.$watches 甚至是对 Scope 的依赖。

可能还有其他差异,但这是一个很好的列表,可以帮助您入门。

于 2013-12-10T20:50:33.447 回答
17

所以第一个区别非常明显:AngularJS用 JavaScript 编写,而Angular.dart用 dart 编写。

虽然Angular.dart遵循其核心原则,AngularJS但它似乎有点像新功能发展的游乐场。我猜核心团队从 AngularJS 中吸取了所有的教训,并尝试为这个Angular.dart版本实现稍微好一点的东西。目前,似乎一堆东西首先在 Angular 的 dart 版本中实现,然后才被反向移植到AngularJS. 例如,他们只是添加了一个更轻量级的版本ng-repeat,最终应该以AngularJS.

此外,Angular 团队最近还分享了一些关于 Angular 2.0 计划的见解。我敢打赌,这些东西中的大多数会Angular.dart在它们降落之前先降落AngularJS

于 2013-12-07T21:02:57.207 回答
16

更新 01/2018

另请参阅Angular 2 TS 和 Angular 2 Dart 有什么区别?

更新 08/2016

Angular 2 for JS 和 Dart 现在是独立的项目,并且会在一定程度上产生分歧。

例如NgModuleTS RC.5 中引入的可能不会在 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/

原来的

本文列出了几个不同之处:ANGULARDART FOR ANGULARJS 开发人员。迄今为止最好的 Angular 简介。

于 2013-12-08T11:01:02.577 回答