我对Angular.js有所了解,但现在我想教自己Dart和Angular.dart。不过,我很好奇两者之间的区别。Angular.dart教程专门说不会比较两者。使用过两者的人是否对差异有什么看法?
Answers:
更新#2(2013年8月) Dart团队现在在Github上维护了Angular的Dart版本:github上的dart / angular2
更新:AngularDart项目已被封存,并已被Angular2取代。Angular2是Angular的最新版本,可在Dart中使用。
以下原始答案比较了AngularDart和AngularJS1.x。
AngularDart和AngularJS都由Angular团队维护。我们已经从JS方面获取了很多知识,并将其应用于Dart。我们还采用了很多代码,并将其直接移植到Dart世界。
在技术层面上,在Angular的核心中:
表达式语言在两个版本之间兼容。AngularDart解析器最初是从JS直接移植而来的,但一直在不断发展。Dart解析器最大的不同在于它支持多个后端,包括Dart代码生成器。
DI系统不同。在Dart中,它是基于类的,而在Javascript中,则是基于符号的。
该编译器已完全用Dart版本重写。这意味着指令的行为有所不同,现在在修改DOM的“结构指令”,“装饰指令”和组件之间存在区别。
ng-transclude已“融合到浏览器中”,由标准的影子DOM取代。
指令控制器已合并到组件中
AngularDart中的指令使用带注释的类声明。链接/编译功能被替换为应用功能
在AngularDart中,范围是通过Dart区域自动摘要的,从而消除了对scope。$ apply的需求。
AngularDart具有属性映射的概念,但还没有回到AngularJS。这意味着指令应该需要更少的scope。$ watchs甚至对Scope的依赖。
可能还有其他差异,但这是一个很好的入门指南。
因此,第一个区别非常明显:AngularJS
用JavaScript编写,而Angular.dart
用dart编写。
尽管Angular.dart
遵循了其核心原则,AngularJS
但它似乎在为新功能的发展铺平了道路。我猜核心团队会从AngularJS那里学到所有东西,并尝试在Angular.dart
版本上更好地实现。目前,似乎有很多事情是在dart版本的Angular中首先实现的,然后才移植到AngularJS
。例如,他们只是添加了一个更轻量级的版本,ng-repeat
该版本最终应在中出现AngularJS
。
Angular团队最近还分享了有关Angular 2.0计划的一些见解。我打赌这些东西中的大多数会在降落Angular.dart
之前先降落AngularJS
。
更新01/2018
另请参阅Angular 2 TS和Angular 2 Dart有什么区别?
更新08/2016
JS和Dart的Angular 2现在是独立的项目,并且会有所不同。
例如NgModule
,TS 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/
原版的
Angular.Dart中ngTransclude的类似物
Angular.dart使用shadowDom,而AngularJs不使用。
AngularJs使用ngTransclude代替。
ng-app和data-ng-app有什么区别?
Angular.dart似乎不支持链接的问题中讨论的其他前缀。
Angular.dart没有与等效的功能ng-init
。(另请参阅GitHub问题-端口:ng-init)
Angular.dart没有ng-controller
指令(port:ngController)
而是@NgController(selector:'[foo-controller]', publishAs:'foo')
使用
Angular.dart不支持ng-repeat
地图(ng-repeat与Map不起作用)
Angular.dart没有restrict
与AngularJS的“ restrict”等效的Angular.dart指令。
AngularJS的创建者和AngularDart团队的成员Misko Hevery在这里回答了类似的问题
本文列出了几个区别:ANGULARDART FOR ANGULARJS开发人员。最佳角度介绍。