Polymer元素和AngularJS指令有什么区别?

在Polymer入门页面上,我们看到Polymer实例的一个示例:

<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>

你会注意到<x-foo></x-foo>platform.jsx-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) {
        }
    };
});
  • 两者有什么区别?

  • Polymer解决了AngularJS没有或没有的问题?

  • 是否有计划将Polymer与AngularJS绑定在一起?


  • 你不是第一个问这个问题的人:)在解决你的问题之前,让我澄清一些事情。

  • Polymer的webcomponents.js是一个库,它包含几个用于各种W3C API的webcomponents.js ,它们属于Web Components伞。 这些是:

  • 自定义元素
  • HTML导入
  • <template>
  • 影子DOM
  • 指针事件
  • 其他
  • 文档中的左侧导航栏(polymer-project.org)为所有这些“平台技术”提供了一个页面。 每个页面还有一个指向单个polyfill的指针。

  • <link rel="import" href="x-foo.html">是一个HTML导入。 导入是在其他HTML中包含HTML的有用工具。 您可以在导入中包含<script><link> ,标记或其他任何内容。

  • 没有将“ <x-foo> ”链接到x-foo.html。 在你的例子中,假定x-foo.html中定义了<x-foo>的自定义元素定义(例如<element name="x-foo"> )。 当浏览器看到该定义时,它被注册为一个新元素。

  • 在问题上!

    Angular和Polymer有什么区别?

    我们在Q&A视频中介绍了其中的一些内容。 一般来说,Polymer是一个旨在使用(并显示如何使用)Web组件的库。 它的基础是自定义元素(例如,您构建的所有内容都是Web组件),并随着Web的发展而演变。 为此,我们只支持最新版本的现代浏览器。

    我将用这张图片来描述Polymer的整个架构堆栈:

    在这里输入图像描述

    RED层:我们通过一组polyfills获取明天的网页。 请记住,随着浏览器采用新的API,这些库随着时间推移而消失。

    黄色层:用polymer.js撒上一些糖。 这一层是我们关于如何一起使用spec'd API的意见。 它还增加了数据绑定,合成糖,变化观察者,发布的属性等内容......我们认为这些东西对构建基于Web组件的应用程序很有帮助。

    绿色:全套UI组件(绿色层)仍在进行中。 这些将是使用所有红色+黄色图层的Web组件。

    Angular指令与自定义元素?

    见Alex Russell的答案。 基本上,Shadow DOM允许组成HTML的一部分,但也是封装该HTML的工具。 这基本上是网络上的一个新概念,而其他框架将利用这个概念。

    Polymer解决了AngularJS没有或没有的问题?

    相似之处:声明性模板,数据绑定。

    差异:Angular具有用于服务,过滤器,动画等的高级API,支持IE8,并且在这一点上,它是用于构建生产应用程序的更加健壮的框架。 聚合物刚刚开始alpha。

    是否有计划将Polymer与AngularJS绑定在一起?

    他们是单独的项目。 也就是说,Angular和Ember团队都宣布他们最终将转向在其自己的框架中使用底层平台API。

    ^这是一个巨大的胜利IMO。 在Web开发人员拥有强大工具(Shadow DOM,自定义元素)的世界中,框架作者还可以利用这些原语创建更好的框架。 他们中的大多数人目前正在经历艰难的工作,“完成工作”。

    更新:

    关于这个话题有一篇非常棒的文章:“Polymer和Angular的区别在于”


    对于你的问题:

    是否有计划将Polymer与AngularJS绑定在一起?

    来自AngularJS的官方Twitter账号:“angularjs将使用聚合物作为它的小部件,这是双赢的”

    来源:https://twitter.com/angularjs/status/335417160438542337


    在这个视频中,来自AngularJS的两个人谈论了关于这两个框架(AngularJS 1.2和Beyond)的差异和相似之处。

    这些链接将为您带来正确的问答:

  • http://www.youtube.com/watch?v=W13qDdJDHp8&feature=share&t=56m34s
  • http://www.youtube.com/watch?v=W13qDdJDHp8&feature=share&t=59m8s
  • 链接地址: http://www.djcxy.com/p/2187.html

    上一篇: What is the difference between Polymer elements and AngularJS directives?

    下一篇: angular.service vs angular.factory