有没有人成功将聚合物元素添加到Meteor项目中?我正努力让它发挥作用。
我尝试使用bower在public下安装Polymer包:
├── public
│ ├── bower_components
│ │ ├── platform
│ │ └── polymer
│ ├── elements
│ │ └── my-element.html
然后我包含了这样的元素:
<head>
<title>test</title>
<script src="bower_components/platform/platform.js"></script>
<link rel="import" href="elements/my-element.html">
</head>
<body>
...
<my-element></my-element>
...
</body>
这导致了对platform.js和my-element.html的XHR请求的无限循环。
我还尝试了meteor-polymer包,其中不包含polymer.html,我无法让它识别包装:
=> Errors prevented startup:
While building the application:
error: no such package: 'polymer'
我希望有人能够让Polymer与Meteor合作,因为我真的想在这款应用中使用我的组件。
答案 0 :(得分:15)
我创建了一个包,用于向Meteor添加Polymer功能。
这是github。
http://github.com/ecwyne/meteor-polymer
更新:
它也可以使用meteor add ecwyne:polymer-elements
答案 1 :(得分:10)
如果您仍然遇到在Meteor中添加和使用Polymer的问题,这里有一种方法可行。
我们将使用 Bower 将Polymer添加到Meteor项目中。
创建Meteor应用程序后,导航到应用程序的目录并按照以下步骤操作:
$ bower init
=&gt;这将指导您完成通过终端现在让我们添加Polymer组件:
$ bower install --save Polymer/polymer
bower install --save Polymer/webcomponentsjs
bower install --save Polymer/core-elements
bower install --save Polymer/paper-elements
现在我们在app的根文件夹中有一个bower_components
目录,其中包含Polymer componets。创建另一个名为public
的文件夹,并将bower_components
移到public
文件夹中,以便我们public/bower_components
。
以下是一段简单的代码,您可以将yourappname.html
的内容替换为。
<head>
<title>Athman's Polymer Demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<script src="bower_components/webcomponentsjs/webcomponents.js"></script>
<link rel="import" href="bower_components/core-scaffold/core-scaffold.html">
<link rel="import" href="bower_components/core-header-panel/core-header-panel.html">
<link rel="import" href="bower_components/core-menu/core-menu.html">
<link rel="import" href="bower_components/core-item/core-item.html">
<link rel="import" href="bower_components/paper-toast/paper-toast.html">
<link rel="import" href="bower_components/paper-fab/paper-fab.html">
<style>
html, body {
height: 100%;
margin: 0;
}
body {
font-family: sans-serif;
}
core-scaffold {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
#core_toolbar {
color: rgb(255, 255, 255);
background-color: rgb(79, 125, 201);
}
#core_card {
width: 96%;
height: 300px;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 2px;
box-shadow: rgba(0, 0, 0, 0.0980392) 0px 2px 4px, rgba(0, 0, 0, 0.0980392) 0px 0px 3px;
margin: 2%;
background-color: rgb(255, 255, 255);
text-align: left;
}
paper-fab {
position: absolute;
right: 20px;
bottom: 20px;
}
</style>
</head>
<body >
<core-scaffold>
<core-header-panel navigation flex mode="seamed">
<core-toolbar id="core_toolbar">Navigation</core-toolbar>
<core-menu theme="core-light-theme">
<core-item icon="settings" label="item1"></core-item>
<core-item icon="settings" label="item2"></core-item>
</core-menu>
</core-header-panel>
<div tool>Test Project</div>
<core-card id="core_card" vertical layout start>
<div style="padding: 20px;">This is a sample project</div>
</core-card>
<paper-toast id="toast1" text="Created by Nic Raboy"></paper-toast>
</core-scaffold>
<paper-fab icon="add" onclick="document.querySelector('#toast1').show()"></paper-fab>
</body>
现在让我们的应用运行...
$ meteor
享受聚合物
答案 2 :(得分:4)
很抱歉听到你一直无法让Meteor和Polymer在一起玩得很好。上面的评论解释了Meteor的模板系统的情况,但万一它有用:
在Polymer团队中,我们创建了一个名为Vulcanize的工具,它可以将Polymer元素所需的所有样式,脚本和依赖项展平(连接)到单个文件中。这消除了对任何XHR / Ajax调用的需要,除非元素在某处调用远程服务器。
这是使用Vulcanize工具的guide,它可以帮助解决上述问题。
答案 3 :(得分:0)
我也和这两个人一起玩过。它不是那么漂亮,但我一起工作。
<head>
<title>my-app</title>
<script src="/polymer/platform.js"></script>
<link rel="import" href="/polymer/polymer.html">
</head>
所以
在我的公共目录中
/public/polymer/polymer.html
/public/polymer/other-polymer-files
流星聚合物包已过时
答案 4 :(得分:0)
虽然有一种聚合物(https://atmospherejs.com/package/polymer)的陨石包装似乎很有希望。
如果您想自己添加javascript文件,可能需要尝试将它们放在:
client/compatibility/
如果你没有,你就无法访问聚合物的全局变量,因为正常的javascript全局变量只是在任何函数之外创建为var myGlobal;
的变量。
我很好奇流星如何解决聚合物把手的模板语法。
`
答案 5 :(得分:0)
@jamstooks 我和你一样有相同的文件夹结构,也有同样的麻烦。
终于有了工作 - &gt;尝试:
<script src="bower_components/webcomponentsjs/webcomponents.js"></script>
<link rel="import" href="bower_components/polymer/polymer.html" />
然后,离开&#34; my-element &#34;标记出来并只使用webcomponents。 例如:
<core-scaffold id="core_scaffold">
<core-header-panel mode="seamed" id="core_header_panel" navigation flex>
<core-toolbar id="core_toolbar">
</core-toolbar>
<core-menu valueattr="label" id="core_menu" theme="core-light-theme">
<core-item id="core_item" icon="settings" label="Item1" horizontal center layout active></core-item>
<core-item id="core_item1" icon="settings" label="Item2" horizontal center layout></core-item>
</core-menu>
</core-header-panel>
<div id="div" tool>Your App Title
</div>
<core-pages selected="0" selectedindex="0" notap id="core_pages">
<section id="section" active>
</section>
<section id="section1">Page Two</section>
</core-pages>
</core-scaffold>
流星1.0.2.1 和流星添加ecwyne:聚合物元素
@ecwyne感谢你的包裹贡献 - 像魅力一样: - )
答案 6 :(得分:0)
在Meteor中,/public
目录中的所有文件夹/文件都要求您导入如下:
<link import="/bower_components..>
和您的自定义元素相同
<link import="/elements/my-elements.html>
注意:
无需使用bower
安装Polymer。
相反,试试这个:
$ meteor add ecwyne:polymer-elements
答案 7 :(得分:0)
对于聚合物v0.5.5,使用分叉的@ecwyne包更新到最新的聚合物版本:
meteor add boxxa:polymer-elements
答案 8 :(得分:0)
使用聚合物元素时遇到了类似的问题。解决方案是一个构建插件,可以硫化导入文件中列出的所有文件。
结帐https://github.com/meteorwebcomponents/compiler。它正是这样做的。使用此包,您不必在公共文件夹中编写聚合物代码,然后导入到blaze模板。使用studentList[0].classRollNum
,您可以使用聚合物作为默认视图图层而不是闪耀。您需要做的就是创建一个名为mwc:compiler
的配置文件。
我们已经构建了一个布局渲染包,可以像Blaze.render函数一样使用它。 https://github.com/meteorwebcomponents/layout
还可以使用从聚合物组件中反应性地使用流星数据的数据混合https://github.com/meteorwebcomponents/mixin
这是一个带有flowrouter https://github.com/meteorwebcomponents/demo-flowrouter
的演示应用这是一个使用上述所有软件包https://github.com/HedCET/TorrentAlert
的应用