【问题标题】:Differences between Angular.js and Angular.dart? [closed]Angular.js 和 Angular.dart 的区别? [关闭]
【发布时间】:2013-11-28 09:23:51
【问题描述】:

我对 Angular.js 有点了解,但我现在想自学 Dart 和 Angular.dart。不过,我有点好奇两者之间的区别是什么。 Angular.dart 教程specifically says it won't compare the two。使用过两者的人是否对两者的区别有所了解?

【问题讨论】:

  • 是的......而且一个比另外两个更老、更成熟,但我在想不太明显的差异。

标签: angularjs dart angular-dart


【解决方案1】:

2018 年 1 月更新

另见What's the difference between Angular 2 TS and Angular 2 Dart?

2016 年 8 月更新

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

例如 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/

原创

本文列出了几个不同之处:ANGULARDART FOR ANGULARJS DEVELOPERS. INTRODUCTION TO THE BEST ANGULAR YET.

【讨论】:

    【解决方案2】:

    更新 #2(2016 年 8 月) Dart 版本的 Angular 现在由 Github 上的 Dart 团队维护: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 中的指令是用带注释的类声明的。链接/编译函数被替换为应用函数

    • 在 AngularDart 中,作用域通过 Dart 区域自动消化,消除了作用域的需要。$apply。

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

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

    【讨论】:

    • 知道什么时候可以使用吗?甚至现在还缺少一些基本功能,开始使用 Dart 似乎很兴奋:(
    • @SalmanPK AngularDart 可用。您缺少哪些功能?
    • 两者的基本支持已经可用。我们仍在开发一些附加功能(例如验证)。
    • 一个明显的区别是浏览器兼容性 - angular.js 声明“Safari、Chrome、Firefox、Opera、IE8、IE9 和移动浏览器(Android、Chrome Mobile、iOS Safari)”,而没有这样的声明 angular.dart(在他们的网站上没有找到任何东西) - dart 本身针对 ECMAScript 5 (>= IE9),但是 angular.dart 使用 Shadow DOM 和聚合物的 polyfill - 而聚合物的唯一目标是“常青”浏览器,甚至没有提到移动浏览器。有谁知道这是否是一个正确的观察?
    【解决方案3】:

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

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

    此外,Angular 团队最近还分享了一些关于 Angular 2.0 计划的见解。我敢打赌,这些东西中的大多数会先登陆Angular.dart,然后再登陆AngularJS

    【讨论】:

    • 这句话来自一个非常的高度。我知道这个问题可能不适合 SO,但是 Angular.dart 没有太多可用的文档。因此,我希望获得更多实质性信息,例如 - 标记在哪里不同(这不应该很大程度上取决于语言语法(至少是最常见的结构来理解这个想法)。 - 有哪些标记结构可用,但是不是在另一个。恕我直言,这两种产品都是相关的,并且是由两个相互交谈的小组开发的,这有点薄。
    • 备份关于“游乐场”的观点 - stackoverflow.com/a/21055757/3966682
    猜你喜欢
    • 2014-08-18
    • 2012-12-16
    • 2011-12-30
    • 2014-11-01
    • 2013-08-07
    • 2016-12-17
    • 2020-06-09
    • 2013-01-04
    • 2014-10-10
    相关资源
    最近更新 更多