Javascript 在Meteor中,如何在服务器端呈现模板?

Javascript 在Meteor中,如何在服务器端呈现模板?,javascript,html,meteor,handlebars.js,Javascript,Html,Meteor,Handlebars.js,我跟随它,用它建造了这个: 但正如您所看到的,加载速度非常慢,因为meteor从客户端加载数据 当我想在Meteor.isServer中使用全局模板时,会出现此错误: ReferenceError: Template is not defined at app/products.js:56:3 ... 如何从服务器端提供模板,这样我就不必等待客户端了?即使代码在客户端html中,模板也会随服务器提供。它们花费很长时间的原因是meteor集合在第一次加载时下载到客户端的步骤 更新:我知道这并不是

我跟随它,用它建造了这个: 但正如您所看到的,加载速度非常慢,因为meteor从客户端加载数据

当我想在Meteor.isServer中使用全局
模板
时,会出现此错误:

ReferenceError: Template is not defined
at app/products.js:56:3 ...

如何从服务器端提供模板,这样我就不必等待客户端了?

即使代码在客户端html中,模板也会随服务器提供。它们花费很长时间的原因是meteor集合在第一次加载时下载到客户端的步骤

更新:我知道这并不是你想要的,但是延迟的根本原因不是模板系统

核心问题是浏览器和服务器之间的延迟。您需要将服务器放在离您较近的位置,以消除此延迟/使其与任何web服务器一样更短

如果你无法靠近服务器,你可以显示加载。。。消息,以便用户知道数据将很快可用

{{#unless CartItems.count}}
    <tr>
        <td colspan="4">Loading...</td>
    </tr>
{{else}}
    {{#each CartItems}} 
        <tr>
           <td>{{Name}}</td>
           <td>${{Price}}</td>
           <td>{{Quantity}}</td>
           <td>${{Total}}</td>
        </tr>
     {{/each}}
{{/unless}}
{{#除非CartItems.count}
加载。。。
{{else}
{{{#每个CartItems}
{{Name}}
${{Price}
{{数量}}
${{Total}
{{/每个}}
{{/除非}

目前没有内置的方法来实现这一点,但是添加服务器端模板呈现是一项计划中的功能(尽管我还没有在路线图上看到它):

此版本的spiderable专门用于搜索引擎。A. Meteor的未来版本还将在inital上向web浏览器发送HTML 页面加载。流星模板系统是专门为 支持这个用例

()


虽然人们会说这违反了“仅通过网络发送数据”的理念,但对于需要良好SEO的网站来说,这是非常必要的,当服务器和客户端都可以使用相同的模板语言和框架时,这也是一件非常自然的事情。

如果您在Node.JS框架中寻找此类功能,我建议您使用Derby.JS

试试。 该软件包增加了对Meteor中服务器端把手的支持。在Meteor发布服务器端呈现支持之前,它主要是作为服务器端电子邮件html的权宜之计

> mrt add handlebars-server

真正地我的意思是,这在服务器中应该是基本的。。lol:D在大多数情况下,为动态页面提供服务比更新页面更重要。您不应该在客户端加载所有数据。它应该被调到你需要的一个给定的模板。这可能受到服务器端发布功能的限制。他只有3条数据,我认为这是服务器和浏览器之间的延迟问题@Adam如果您在本地主机上运行此操作,您会遇到相同的问题吗?这不是距离问题,很明显,这些信息是使用xhr请求调用的,因为如果我关闭javascript,则不会显示任何内容。是的,我在本地也有同样的问题。这有点不规则,通常滞后时间是不明显的<100ms,你能发布你的代码吗?Meteor的重点是在线数据-不要提供HTMl,提供数据,但这个问题是关于meteorjs的!