AngularDart的最新动向标题

这是关于AngularDart(Dart版本的Angular)的最新动态介绍。应该涵盖了所有主要话题。

版本

AngularDart目前的版本是2.2.0。在GitHub上已经发布了2.3.0的预发布版本。从TypeScript版的Angular分支之后,两个版本不再相关,并且更改内容也不同步。
由于有破坏性的更改在较小版本中引入,因此并没有严格遵守Semver规范。
尽量保持2.0的API不变,但内部结构已经进行了大幅改变,事实上有相当部分重新构建。
根据Gitter聊天信息,他们似乎会很快再次公布未来的路线图。

重新搭建Template Compiler

为了提高性能并减少负载,我们将丢弃所有基于运行时反射(dart:mirror)的代码,并完全重构为基于Template Compiler的package:sourcegen。

ComponentState混入。

虽然我们还处于试验阶段,但我们已经新增了ComponentState(Mixin)。类似于React或Flutter中的setState()函数,它可以将状态反映到视图中,无需进行脏检查。查看这个测试代码将会更容易理解这个功能。

还有其他计划以进一步提高Change Detection的效率。

Angular中的NgTestBed

尽管还处于试验阶段,但作为组件测试的工具,NgTestBed已经被新实现了。(示例)

文件

路由器

正在使用TS版的旧版本。文件已经不再维护,情况有些困难。据说有一个重新编写路由器的项目正在进行中。关于是否会跟随TS版,详细情况尚不清楚。

DI

看起来他们计划将AngularDart从中独立出来,形成一个可以在服务器等地方使用的包。
https://github.com/dart-lang/angular2/issues/16

与TypeScript版API不兼容

根据您的要求,以下是对原文的中文翻译:

Renderer被删除,TemplateRef还没有参数,组件继承(还?)不存在,ComponentResolver的resolveComponent()是异步的,NgPlural被删除,推荐使用package:intl等等。由于进行了分叉,所以与TypeScript版相比,API的兼容性慢慢变得有所差异。
请通过CHANGELOG来确认破坏性变更。
与RxJS相关的代码,在Dart版中,建议使用核心库dart:async的Stream和package:stream_transformers。
如果想在Dart版中尽可能使用RxJS的API,可以自行承担责任使用RxDart。

DDC(不)支持

DDC是一种将Dart代码快速转换为可读性高的ES2015代码的编译器。它被宣传可以在像Chrome和Firefox这样的现代浏览器上进行舒适的调试,而不是使用Dartium。据说在谷歌内部的AngularDart开发项目中已经被引入了。
我们可以说DDC对于AngularDart来说是下一个最重要的里程碑。
目前,个人似乎可以尝试使用DDC进行构建。(我没有试过)

语言服务

目前已经开发了一种名为”Angular Language Service”的TypeScript版,而在Dart版中也有类似的项目。
https://github.com/dart-lang/angular_analyzer_plugin
以前Angular的模板字符串部分并不是静态分析的对象,因此往往会出现重构漏洞等麻烦的错误,但是一旦完成并与Dart Analysis Server集成,开发效率将大大提升。

角度组件

目前正在进行的项目可以说是 TypeScript 版的官方 Material 组件集 angular/material2,而对应的 Dart 版项目是 angular2_components。你可以在此链接中找到该项目:https://github.com/dart-lang/angular2_components

据说在Google内部的产品开发中,有一种名为”material components”的开源版本,有100多种不同的存在方式。但是,这个开源版本目前的种类还不是很多,被称为”Preview Release”,并且没有太多活跃的贡献,这有些令人担忧。

然而,在TypeScript版本中,flex-layout已经独立于Angular Material发布了,但是在Dart版本中,目前官方没有计划发布布局功能,因此需要依赖社区的热心人士来推动。

关于服务器端渲染(SSR)

为了优先提高性能,在v2.2.0中,抽象层Renderer被移除了。现在将直接使用dart:html。

关于SSR,我们期望社区的志愿者们来处理(第二次)。由于将Template AST从angular中提取出来形成了一个独立的包,所以实施起来可能并不那么困难,你不觉得吗?

个人来说,我更倾向于采用一种架构,即在启动速度快且能够快速请求和显示主要内容,而剩余模块则采用延迟加载的方式,而不是单纯的SSR架构。我希望能够利用ServiceWorker和HTTP2的进步。

文档化

angular.io的内容已经被转载到https://webdev.dartlang.org/angular/guide,并且dart-lang/angular2的pubspec.yaml中也将webdev.dartlang.org指定为主页,所以看起来正在转移到那里的过程中。
此外,https://angular.io/docs/dart/latest/api/会重定向到webdev.dartlang.org。

主要信息来源

Dart公式博客(目前没有独立的AngularDart博客,这里介绍更新信息)
AngularDart文档(来自angular.io的迁移?)
AngularDart代码库(如果忙的话,只需查看CHANGELOG即可)
Angular2 Gitter(这里是热烈讨论的场所)
Dart开发者峰会2016(第一天的主题以AngularDart为中心)

广告
将在 10 秒后关闭
bannerAds