2013-02-26 92 views
5

我跟着this tutorial,我用它来构建它:http://x111.meteor.com/ 但是正如你所看到的,加载非常缓慢,因为流星从客户端加载数据。在Meteor中如何在服务器端渲染模板?

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

如何为来自服务器端的模板,这样我就不必等待客户端:

,当我想用​​全球TemplateMeteor.isServer我得到这个错误?

+0

流星*整点*为*数据上线* - 不提供HTML,服务数据 – Swadq 2013-02-27 12:54:05

回答

1

即使代码位于客户端html中,模板也会与服务器一起提供。他们花费很长时间的原因是流星收集在第一次加载时下载到客户端的步骤。

更新:我知道这不是你所要求的,但是滞后的根本原因不在于模板系统。

核心问题将是您的浏览器&服务器之间的延迟。您需要将服务器放在离您较近的位置,以消除此延迟/使其与任何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}} 
+0

真的吗?我的意思是这应该是基本的服务器..大声笑:D服务动态页面在大多数情况下比更新页面更重要。 – Adam 2013-02-26 10:20:37

+0

你不应该加载所有的数据客户端。应该为给定模板所需的内容分页。这可以通过您的服务器端发布功能来限制。 – 2013-02-26 11:19:01

+0

他只有3条数据,我认为它是服务器和浏览器之间的延迟。 @亚当如果你在你的本地主机上运行这个,你会得到同样的问题吗? – Akshat 2013-02-26 11:35:50

1

目前还没有内置的方式做到这一点,但添加服务器端模板渲染是有计划的功能(虽然我没有看到它在路线图上还):

这个版本蜘蛛是专门针对搜索引擎的。未来版本的Meteor也会将HTML发送给网页浏览器,并通过inital 页面加载。流星模板系统是专门为支持此用例的 设计的。

http://meteor.com/faq/can-meteor-serve-static-html

虽然有人会说这违反了哲学“仅通过网络发送数据”,对于需要良好的SEO这是非常必要的,也是很自然的事给你当做网站服务器和客户端都有相同的模板语言和框架。

1

如果您正在寻找在Node.js的框架,这种类型的功能,我会建议使用Derby.JS http://derbyjs.com/

+0

+1即使它仍然是阿尔法德比看起来很棒 – jusynth 2013-09-06 18:42:32

+4

但这个关于meteorjs的问题! – neftedollar 2014-04-29 13:35:09

6

尝试this。 这个包增加了对Meteor服务器端Handlebars的支持。它主要用作服务器端电子邮件HTML的停止空白,直到Meteor发布服务器端渲染支持。

> mrt add handlebars-server 
相关问题