<html> <head> <!-- 1. Shim missing platform features --> <script src="polymer-all/platform/platform.js"></script> <!-- 2. Load a component --> <link rel="import" href="x-foo.html"> </head> <body> <!-- 3. Declare the component by its tag. --> <x-foo></x-foo> </body> </html>
您会注意到的是由platform.js和x-foo.html定义。
看起来这相当于AngularJS中的一个指令模块:
angular.module('xfoo',[]) .controller('X-Foo',['$scope',function($scope) { $scope.text = 'hey hey!'; }) .directive('x-foo',function() { return { restrict: 'EA',replace: true,controller: 'X-Foo',templateUrl: '/views/x-foo.html',link: function(scope,controller) { } }; });
>两者之间有什么区别?
>聚合物解决AngularJS没有或不会有什么问题?
>有没有计划将聚合物与AngularJS在未来?
> Polymer的webcomponents.js是一个库,其中包含多个Web应用程序下的各种W3C API的polyfills。这些是:
>自定义元素
> HTML导入
>
>阴影DOM
>指针事件
>其他
文档中的左侧导航(polymer-project.org)具有所有这些“平台技术”的页面。每个页面都有一个指向各个polyfill的指针。
>是一个HTML导入。导入是将HTML包含在其他HTML中的有用工具。您可以在导入中包含,,标记或其他任何内容。
> Nothing“links”到x-foo.html。在您的示例中,假设的自定义元素定义(例如)在x-foo.html中定义。当浏览器看到该定义时,它被注册为一个新的元素。
至问题!
Angular和Polymer之间有什么区别?
我们在我们的Q&A video中介绍了一些。通常,Polymer是一个旨在使用(并展示如何使用)Web组件的库。它的基础是自定义元素(例如,您构建的所有内容都是一个Web组件),并随着Web的发展而演变。为此,我们只支持最新版本的现代浏览器。
我将使用这个图像来描述Polymer的整个架构堆栈:
红色层:我们通过一组polyfill获得未来的web。请记住,随着浏览器采用新的API,这些库会消失。
黄色层:在一些糖与polymer.js。这一层是我们对如何使用规范的API的意见。它还添加了数据绑定,合成糖,更改观察者,已发布的属性…我们认为这些事情有助于构建基于Web组件的应用程序。
绿色:一组全面的UI组件(绿色层)仍在进行中。这些将是使用所有红色黄色层的Web组件。
角度指令vs.自定义元素?
参见Alex Russell的answer.基本上,Shadow DOM允许组合一些HTML,但也是封装该HTML的工具。这基本上是一个新的概念在网络和其他框架将利用。
聚合物解决AngularJS没有或不会有什么问题?
相似之处:声明式模板,数据绑定。
差异:Angular具有用于服务,过滤器,动画等的高级API,支持IE8,并且在这一点上,它是构建生产应用程序的更加稳健的框架。聚合物刚刚开始在alpha。
有没有计划将聚合物与AngularJS在未来?
他们是separate projects.也就是说,Angular和Ember的团队announced,他们最终会移动到在自己的框架中使用底层平台API。
^这是一个巨大的赢得IMO。在Web开发人员具有强大工具(Shadow DOM,自定义元素)的世界中,框架作者也可以利用这些原语来创建更好的框架。他们大多数目前经历了巨大的困难,“完成工作”。
更新:
有一个非常好的文章关于这个主题:“Here’s the difference between Polymer and Angular”