免责声明 - 我对制作网络应用程序非常陌生,我在周末经历了一些流星js教程,非常酷。
我想要制作这个项目,包括将表格数据嵌入到网站中。我想用iFrame做到这一点。
我可以看到如何使用meteor,路由到模板来呈现我想要的html,但我关心的是性能。让整个应用程序加载只显示几行html似乎过多,它肯定不需要所有的JavaScript。
html可以是一个静态文件,只有在Web应用程序用户保存更改时才会更改,它不必每次都有人看到嵌入时动态加载。
所以我真正要问的是,如何使用meteor js编写静态html文件?
答案 0 :(得分:1)
您需要的是服务器端呈现(SSR),因为您打算直接从您的流星服务器提供html。
流星不支持SSR。
虽然我自己并没有试图让SSR在meteor中工作,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});
}
然后按如下方式添加服务器路由:
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
。
在这个阶段我不建议以这种方式使用meteor,而是创建一个简单的后端,直接连接到DDP或mongo并呈现你的iframe的html。