流星js写的静态HTML?嵌入<iframe>

Static HTML written by meteor js? To embed in an <iframe>

本文关键字:lt iframe gt 嵌入 js 静态 HTML 流星      更新时间:2023-09-26

免责声明-我是制作网络应用程序的新手,周末我刚刚学习了一些流星js教程,非常酷。

我有一个我想做的项目,它涉及到将表格数据嵌入网站。我想用iFrame来完成此操作。

我可以看到如何使用流星来实现这一点,路由到一个模板来渲染出我想要的html,但我关心性能。让整个应用程序加载到只显示几行html似乎太过分了,它当然不需要所有的javascript。

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

所以我真正想问的是,如何使用流星js来编写一个静态html文件?

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

Meteor还不支持SSR。

虽然我自己还没有尝试过让SSR在流星中工作,但Arunoda已经实现了一些相当严重的限制。基本上你不可能有太多的反应。这可能是由于服务器上使用了光纤。但你说你的iframe不需要反应性,所以这不应该阻止你。

您可以将Arunoda的解决方案与Iron Router的服务器路由相结合。

启用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

在这个阶段,我不建议以这种方式使用流星,而是创建一个简单的后端,直接连接到DDP或mongo,并渲染你的iframe的html。