由meteorjs写的静态HTML? embedded到<iframe>中

免责声明 – 我对制作networking应用程序非常陌生,周末我刚刚通过了几个meteorjs教程,这很酷。

我有我想要做的这个项目,这涉及到将表格数据embedded到网站中。 我想用一个iFrame做到这一点。

我可以看到这是怎么用meteor来完成的,路由到一个模板来渲染出我想要的html,但是我关心的是性能。 有整个应用程序加载只是显示几行HTML似乎是过分的,它当然不需要所有的JavaScript。

html可以是一个静态文件,只有当web应用程序用户保存更改时才会更改,每次有人看到embedded时都不必dynamic加载。

所以我真正要问的是,我怎样才能使用meteorjs写一个静态的html文件?

你需要的是服务器端渲染(SSR),因为你打算直接从meteor服务器提供html。

meteor还不支持SSR。

虽然我自己并没有试图让SSR在meteor中工作,但Arunoda却有一些相当严格的限制。 基本上你不能有太多的反应。 这可能是由于服务器上使用了光纤。 但是你说你不需要react native在你的iframe中,所以不应该阻止你。

您可以将Arunoda的解决scheme与Iron Router的服务器路由结合使用 。

启用S​​SR包:

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')); 

并声明你的模板pipe理器:

 // 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这种方式,而是创build一个简单的后端,直接连接到DDP或mongo并呈现您的iframe的html。