2

我想用飞镖创建一个测验。复选框,单选按钮,下拉菜单,输入框,...

此外,我想从数据库加载测验,将其显示在网站上,并将特定用户的结果也存储到数据库中。Redis 或 mysql。

对我来说最大的问题是:我应该使用 polymer.dart 还是 angular.dart?两者都有能力做到这一点,但显而易见的选择是什么?

4

2 回答 2

6

Polymer 和 Angular 可能看起来非常相似,因为它们都有模板和数据绑定,但它们实际上完全不同。

Polymer 与其说是一个完整的应用程序框架,不如说它是一个用于创建 W3C 自定义元素的框架1。它依赖于新的、即将到来的和充满希望的标准,如 Shadow DOM、Object.observe、Mutation Observers、Scoped CSS、元素、模板绑定、Node.bind()、自定义元素和 HTML 导入,基本上使它们更容易一起使用创建自定义元素。您实际上根本不需要使用 Polymer 来创建自定义元素,它只会更加乏味。聚合物项目还为这些标准构建了 polyfill,因此有时很难区分哪些部分是实际的“聚合物”部分。在 Dart-land 中,只有聚合物包中的东西,主要是 Polymer 类,其他所有东西都在像 observe、template_binding 这样的包中,或者已经集成到 dart:html 中,比如 Shadow DOM。

在 Polymer 中实现自定义元素后,该元素的用户根本不需要了解 Polymer,它是一个实现细节。他们可能需要了解自定义元素升级或 Node.bind(),而不是 Polymer。事实上,Polymer 如此专注于元素,以至于没有真正的“Polymer 应用程序”之类的东西,只有一个由自定义元素构建的应用程序,恰好是用 Polymer 实现的,但它们也可以很容易地实现使用 Mozilla 的 X-Tags 库[2] 实现

Angular 的功能肯定更全,我称之为“应用程序框架”,而不是自定义元素框架。它提供指令(节点的混合行为)、依赖注入、各种服务(如 http 和路由),并具有贯穿应用程序的整个可变继承范围思想,并具有全局状态,除此之外,我可能还缺少其他一些东西。Angular 目前不会帮助您构建自定义元素,而是创建在 Angular 应用程序中工作的 Angular 组件。

Angular 应用程序可以使用 Polymer 元素,因为 Polymer 元素只是元素。一种数据绑定应该[3] 正常工作,而双向数据绑定将需要自定义指令(使用 Object.observe 或 Node.bind 来监听属性更改),或者让 Angular 添加对 Node.js 的支持。 bind(),这将允许 Angular 通常双向绑定到任何元素,从 s 到 Polymer 元素,再到 X-Tag 元素。

最后,我不认为两者之间有一个公平的苹果对苹果的比较,而且重叠更小,可能会出现在表面上,因为人们似乎要么高估了 Polymer 的大小,要么高估了 Polymer 的大小。低估了 Angular 的规模,或者他们可能没有意识到哲学上的差异。我完全期望未来会出现更多类似 Angular 的框架,这些框架建立在自定义元素之上,这些元素将比 Polymer 更能与 Angular 相媲美,而且在其他选项中,Polymer 仍然是实现元素的好方法。

资源

于 2014-01-15T09:26:06.840 回答
2

我在 Polymer(https://github.com/ErikGrimes/polymer_elements、https://github.com/ErikGrimes/polymer_ui_elements )上了很多工作,并开发了一个基于 Polymer 的 webapp。我非常喜欢用组件构建应用程序。

最近我沉浸在 AngularDart 中。Angular 也允许创建组件。

在目前的状态下,我会说我发现 Angular 更轻量级。并非所有东西都必须是一个组件,还有更多的轻量级结构(指令、控制器) 分层范围很容易允许连接所有东西。

我还没有做更高级的事情(就像我对 Polymer 所做的那样)来了解 Angular 的局限性并能够进行公平的比较。

两者仍然存在一些故障和限制,并且仍然是 1.0 之前的版本,但都已经允许构建高级应用程序,并且正如 @Nidzaaa 所指出的,它们可以组合使用。

于 2014-01-15T09:45:55.127 回答