您不是第一个问这个问题的人:) 在回答您的问题之前,让我先澄清一些事情。
-
聚合物的webcomponents.js
是一个库,其中包含属于 Web 组件范围内的各种 W3C API 的多个 Polyfill。这些都是:
- 自定义元素
- HTML 导入
<template>
- 影子 DOM
- 指针事件
- others
文档中的左侧导航(聚合物项目.org http://www.polymer-project.org/)有一个包含所有这些“平台技术”的页面。每个页面都有一个指向各个polyfill 的指针。
<link rel="import" href="x-foo.html">
是 HTML 导入。导入是将 HTML 包含在其他 HTML 中的有用工具。您可以包括<script>
, <link>
、标记或导入中的其他内容。
没有任何“链接”<x-foo>
到 x-foo.html。在您的示例中,假设自定义元素定义为<x-foo>
(e.g. <element name="x-foo">
) 在 x-foo.html 中定义。当浏览器看到该定义时,它将被注册为新元素。
继续提问!
Angular 和 Polymer 有什么区别?
我们在我们的文章中介绍了其中的一些内容。一般来说,Polymer 是一个旨在使用(并展示如何使用)Web 组件的库。它的基础是自定义元素(例如,您构建的所有内容都是 Web 组件),并且它随着 Web 的发展而发展。为此,我们仅支持最新版本的现代浏览器。
我将使用这张图来描述 Polymer 的整个架构堆栈:
红色层:我们通过一组填充材料获得明天的网络。请记住,随着浏览器采用新的 API,这些库会随着时间的推移而消失。
黄色层:撒上一些糖和polymer.js。这一层是我们对如何一起使用规范的 API 的看法。它还添加了诸如数据绑定、语法糖、更改观察者、发布的属性之类的东西......我们认为这些东西对于构建基于 Web 组件的应用程序很有帮助。
绿色:UI 组件综合集(绿色层)仍在进行中。这些将是使用所有红色 + 黄色层的 Web 组件。
角度指令与自定义元素?
参见亚历克斯·拉塞尔的answer https://groups.google.com/forum/?fromgroups=#!searchin/polymer-dev/angular/polymer-dev/s761szb9WJc/Lb29XuoJdqAJ。基本上,Shadow DOM 允许编写 HTML 片段,同时也是封装该 HTML 的工具。这从根本上来说是网络上的一个新概念,也是其他框架可以利用的。
Polymer 解决了哪些 AngularJS 没有或不会解决的问题?
相似之处:声明性模板、数据绑定。
区别:Angular 拥有用于服务、过滤器、动画等的高级 API,支持 IE8,在这一点上,Angular 是用于构建生产应用程序的更强大的框架。 Polymer 刚刚起步。
未来有计划将 Polymer 与 AngularJS 结合起来吗?
They're 单独的项目 http://www.polymer-project.org/resources/faq.html#frameworks。也就是说,Angular 和 Ember 团队宣布 https://groups.google.com/forum/#!msg/polymer-dev/4RSYaKmbtEk/uYnY3900wpIJ他们最终将转向在自己的框架中使用底层平台 API。
^ 在我看来,这是一个巨大的胜利。在 Web 开发人员拥有强大工具(Shadow DOM、自定义元素)的世界中,框架作者还可以利用这些原语来创建更好的框架。他们中的大多数人目前都在经历巨大的困难才能“完成工作”。
UPDATE:
关于这个主题有一篇非常棒的文章:“这是 Polymer 和 Angular 之间的区别 http://www.binpress.com/blog/2014/06/26/polymer-vs-angular/"