Google Dart 新进展:Polymer 代替 Web UI

  • Abel Avram
  • 马德奎

2013 年 7 月 22 日

话题:Web框架HTML5语言 & 开发架构

Google Dart将舍弃 Web UI,并用 Polymer 代替它。从表面上看,它们的主要差别是数据绑定和事件处理。

Google 的 Dart 团队已经开始将 Polymer 移植到 Dart。许多组件已经完成并打包,包括observemdvshadow_dompolymer.dart。据 Dart 工程师 John Messerly 介绍,其余功能也将在不久的将来完成,包括:

  • 声明式 <polymer-element> 和定制元素
  • 更多新的或最新的 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 等,所以两者的区别并没有那么大。开发者仍然可以使用 <element>、<template>、<content> 标签和{{}}绑定。有些细节发生了变化,包括数据模型绑定到模板的方式、绑定语法和属性值映射到属性的方式等。这些变化部分是为了适应 Polymer,部分是因为 MDV 已经变化,总之无论如何都已经发生。

下面的代码片段来自两个示例,展示了这两个框架用法的不同:

Web UI:

<ul id="todo-list">
   <template iterate="x in app.todos">
      <template if="viewModel.isVisible(x)">
        <todo-row todo="{{x}}"></todo-row>
      </template>
   </template>
</ul>

Polymer.dart:

<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)关注我们,并与我们的编辑和其他读者朋友交流。

Web框架HTML5语言 & 开发架构