【问题标题】:Static HTML written by meteor js? To embed in an <iframe>流星js写的静态HTML?嵌入 <iframe>
【发布时间】:2014-11-09 00:01:46
【问题描述】:

免责声明 - 我对制作 web 应用程序非常陌生,我周末刚刚学习了一些流星 js 教程,非常酷。

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

我可以看到如何使用流星完成此操作,路由到模板以呈现我想要的 html,但我关心性能。让整个应用加载到只显示几行 html 似乎有些过分,它当然不需要所有的 javascript。

html 可以是静态文件,仅在 Web 应用用户保存更改时更改,不必在每次有人看到嵌入时动态加载。

那么我真正要问的是,如何使用meteor js写一个静态html文件?

【问题讨论】:

  • 我认为你应该先测试一下,看看是否真的有效,然后再关心性能......

标签: javascript node.js iframe static meteor


【解决方案1】:

您需要的是服务器端渲染 (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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    相关资源
    最近更新 更多