Google Dart 将舍弃 Web UI,并用 Polymer 代替它。从表面上看,它们的主要差别是数据绑定和事件处理。
Google 的 Dart 团队已经开始将 Polymer 移植到 Dart。许多组件已经完成并打包,包括 observe 、 mdv 、 shadow_dom 和 polymer.dart 。据 Dart 工程师 John Messerly 介绍,其余功能也将在不久的将来完成,包括:
- 声明式
和定制元素 - 更多新的或最新的 polyfill 包,如 html_imports
- 删除 polymer.dart 的强制编译步骤,只需编辑、保存和刷新
- 将 Polymer UI 元素引入 Dart
- 上述所有新亮点的最新文档
Google Polymer 是一个基于 Web 组件构建 Web 应用的新框架,它承诺支持所有最新的 HTML5 标准和所有常用浏览器。对于后者,它使用 polyfill 补偿这些浏览器缺失的功能。Polymer 看上去前途光明,Dart 对它提供原生支持可能是个不错的主意。另一方面,Google 打算放弃对 Dart 原先使用的 UI 框架 Web UI 的支持。Web UI 构建的初衷也是支持 HTML5 标准,包括 Web 组件和模型驱动视图。
Dart 切换新的 UI 框架使许多用户感到意外:
Thomas Løcke :我很高兴有了 Polymer,但不要误会我的意思,失去 Web UI 我很难过。我已经在 Web UI 上花费了大量时间。
Bernd Wessels :Polymer.dart 之后是什么呢? 难道 Dart(Web 开发的未来)的主要 UI 框架要基于一组松散的 polyfill 的集合?我对此表示怀疑。
我的观点是,在经历了对 Dart 发布漫长的等待后,结果令人沮丧,Dart 依然没有为 UI 开发提供一个可靠的基础。
数个 Google 工程师试图缓解用户对 Dart 不会在短期内稳定的忧虑,并解释了他们选择 Polymer.dart 的原因:
John Messerly :像 Dart 这样的新语言,有一点让令人兴奋,我们可以直接飞跃到 Web 开发的未来。我不确定是否还能通过其它方式做到这点。任何新的 UI 框架 / 库都有一个逐步稳定的过程。通过拥抱 Web 组件和其它标准相关的努力,我们希望 Web 成为最佳的开发环境,并受益于这种努力。
Kasper Lund :我们一直致力于平台其余 API 的稳定性工作。最大的难点在于,随着时间的推移,浏览器 API 总是在不断的发展变化。
对于花费大量时间使用 Dart 构建 Web 应用的开发人员而言,所幸这两个 UI 框架的外在差别并不大,在它们之间进行移植非常简单直观,另一位 Dart 工程师 Justin Fagnani解释道:
因为它们都是基于底层的影子 DOM、定制元素、MDV 和 HTML imports 等,所以两者的区别并没有那么大。开发者仍然可以使用
、、 标签和{{}}绑定。有些细节发生了变化,包括数据模型绑定到模板的方式、绑定语法和属性值映射到属性的方式等。这些变化部分是为了适应 Polymer,部分是因为 MDV 已经变化,总之无论如何都已经发生。 下面的代码片段来自两个示例,展示了这两个框架用法的不同:
<ul id="todo-list"> <template iterate="x in app.todos"> <template if="viewModel.isVisible(x)"> <todo-row todo="{{x}}"></todo-row> </template> </template> </ul>
<ul id="todo-list"> <template repeat="{{app.visibleTodos}}"> <li is="todo-row" todo="{{}}"></li> </template> </ul>
尽管 Dart 工程师不断尝试向语言中引入最新的技术,但这些变化也表明了投注到不够成熟和稳定的技术上存在的风险。Polymer 主页上声明:“Polymer 处于 _pre-alpha_ 状态,只适用于具有冒险精神的开发人员。”
关于 Polymer 的更多细节可以阅读 InfoQ 的新闻:使用 Google Polymer 的 Web 组件。
Google 的另一个重要框架 Angular.js 正在移植到 Dart。更多信息请查看这则新闻: AngularJS 正在移植到 Dart 上 。
查看英文原文: Google Dart Developments: Polymer Replaces Web UI
感谢臧秀涛对本文的审校。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论