在Polymer Getting Started页面上,我们看到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>
Run Code Online (Sandbox Code Playgroud)
您将注意到的是<x-foo></x-foo>由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) {
}
};
});
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?
Polymer解决AngularJS没有或不会有什么问题?
是否有计划在未来将Polymer与AngularJS联系起来?
在查看Polymer时,我在Chrome 37的开发人员工具的样式选项卡中看到以下CSS选择器:

我还看到了一个带有伪选择器的选择器::shadow.
那么,是什么做的/deep/和::shadowCSS选择呢?
我已经创建了一个用于渲染markdown的Polymer元素,它使用了marked.js库.我想知道,在其依赖项中加载的推荐方法是什么?
我应该只使用脚本标签吗?
<script src="../marked/lib/marked.js"></script>
Run Code Online (Sandbox Code Playgroud)
或者将所有依赖项放入html导入并链接到该文件会更好.在这种情况下,我只有一个依赖,但我可以轻松拥有更多.
<!-- in scripts.html -->
<script src="../marked/lib/marked.js"></script>
<script src="../foo/foo.js"></script>
<script src="../bar/bar.js"></script>
<!-- in mark-down.html -->
<link rel="import" href="scripts.html">
Run Code Online (Sandbox Code Playgroud)
注意:这些路径假设我的元素(及其依赖项)正在与bower一起安装,因此它们都应该是兄弟姐妹bower_components.
Facebook的React对即将推出的Web Components规范的主要好处是什么,反之亦然(或者可能是谷歌的Polymer库比较多的苹果对苹果)?
根据JSConf欧盟谈话和React主页,React的主要好处是:
<canvas>几乎所有提到的内容都是通过Web组件本地集成到浏览器中,除了这个虚拟DOM概念(显然).我可以看到虚拟DOM和合成事件今天如何有利于支持旧浏览器,但是并没有丢掉大量本机浏览器代码,比如长期射击自己?就现代浏览器而言,不是很多不必要的开销/重新发明轮子?
以下是我认为 React缺少Web Components会关注的一些内容.如我错了请纠正我.
我一直在使用React,并期待在React中使用Polymer标签.React不识别Polymer标签,因为React只处理基本的DOM标签.有没有办法将Polymer标签添加到React DOM库?
是否有可能来命名自己的自定义元素<date>,<person>,<city>或其他不使用破折号?没有它们可以使用定义元素吗?
我有使用Polymer构建的元素,需要在多个站点(小部件)上运行,其中:
是否可以在命名空间中加载Polymer?例如myObj.Polymer或MyPolymerName
我发现聚合物-js可以让我加载聚合物作为模块,但这不是官方方式. 这仍然出口到全球范围
有没有办法从其内部的元素属性传递参数到Polymer函数<template>?
<script src="http://www.polymer-project.org/1.0/samples/components/webcomponentsjs/webcomponents-lite.js"></script>
<link rel="import" href="http://www.polymer-project.org/1.0/samples/components/polymer/polymer.html" />
<dom-module id="example-element">
<template>
...
<paper-button id="foo" on-tap="bar">Click</paper-button>
...
</template>
</dom-module>
<script>
(function() {
Polymer({
is: 'example-element',
properties: {...},
bar: function(arg){
// Do stuff using argument arg
}
});
})();
</script>
Run Code Online (Sandbox Code Playgroud)
我已经梳理了关于此事的沉默文件.它没有说你是否可以.但是当我尝试它时,它失败了.但也许我没有正确地做到这一点.所以我需要一些帮助.
我唯一遇到的是事件监听器,它似乎无法接受我想传递的参数.说,一个id或一个name.
我尝试过(不成功)做的事情:
<paper-button id="foo" on-tap="bar('foo')"> Click </paper-button>
Run Code Online (Sandbox Code Playgroud)
但似乎没什么用.
事件监听器的想法不起作用,因为它们限制了参数,我无法得到,比方说,id我需要.
ES6的模块基于灵活的加载器架构(虽然标准不是最终的,所以......).
这是否意味着基于system.js的ES6加载器可以加载所有资产?即CSS,HTML,图像,文本,...任何类型的文件?
我问,因为我开始使用WebComponents和Polymer,它们有自己的HTML导入,并使用ES6实现它们,ES6有自己的import/loader(system.js).
问题在于AngularJS,BackboneJS,EmberJS和其他框架.
我必须将项目从php转换为javascript,我必须决定,如果我要使用:
我更喜欢使用Polymer,因为我喜欢它.
然而,我失踪了(并纠正了我错在哪里)能力:
我知道结构取决于我,如何构建我的应用程序,但似乎angularjs有一个很好的预定义结构,用于构建mvc应用程序.
因此,我想知道:如果你想构建一个结构良好的Web应用程序,或者是在其他现有框架中使用的Polymer 补充库,那么Polymer是否是Angular 的替代品?
编辑21.09.2014 没有人真正满意地回答这个问题,因此我将其标记为尚未回答.许多人说它只是"取消".但没有人能够详细说明它究竟取决于什么.
关于应用程序的复杂性?关于申请的需求?聚合物适合哪些需求,哪种不适合?这些是我一直在寻找的答案.
有人说它可以用作前端框架.其他人说这只是一个图书馆而其他人说"是和否".不幸的是相当混乱的答案.
我希望有一个正式的答案,但我告诉你我的感受.我相信它是一种替代品,但Polymer还没有达到其他框架需要工作的结构.也许这是故意的,也许这只是未成熟的问题,因为框架是新的.
我希望创建者能够解释,什么时候最好使用AngularJS,什么时候应该有人使用Polymer来构建大型可伸缩的Web应用程序.
编辑15.08.2015
聚合物1.0已经淘汰.事实证明,聚合物正式不是一个框架,应该与其他前端框架以一种互补的方式工作. https://youtu.be/fD2As5RmM8Q?t=6m42s
polymer ×10
html ×3
javascript ×3
angularjs ×2
reactjs ×2
css ×1
ecmascript-6 ×1
frameworks ×1
html5 ×1
loader ×1
module ×1
polymer-1.0 ×1
shadow-dom ×1
x-tag ×1