您需要的是服务器端渲染 (SSR),因为您打算直接从流星服务器提供 html。
Meteor 还不支持 SSR。
虽然我自己还没有尝试让 SSR 在流星中工作,Arunoda has,但有一些相当严重的限制。基本上你在那里不能有太多的反应。这可能是由于在服务器上使用了光纤。但是你说你的 iframe 中无论如何都不需要反应,所以这不应该阻止你。
您可以将 Arunoda 的解决方案与 Iron Router's server routes 结合使用。
启用 SSR 包:
meteor add meteorhacks:ssr
将您的模板放入私有目录:
<!-- private/embed.html -->
<template name="embed">
<ul>
{{#each posts}}
<li>{{title}}</li>
{{/each}}
</ul>
</template>
在服务器上编译:
SSR.compileTemplate('embed', Assets.getText('embed.html'));
并声明您的模板管理器:
// server/embed.js
Template.posts.getPosts = function(category) {
return Posts.find({category: category}, {limit: 20});
}
然后添加一个server-route如下:
Router.route('/embed/:owner', function () {
var html = SSR.render('embed', {owner: this.params.owner});
this.response.end(html);
}, {where: 'server'});
现在您只需将 iframe 指向http://localhost:3000/embed/myusername。
在这个阶段,我不建议以这种方式使用流星,而是创建一个简单的后端,直接连接到DDP 或 mongo 并呈现你的 iframe 的 html。