我遵循本教程并用它构建了它:http: //x111.meteor.com/ 但正如您所见,加载速度非常慢,因为流星从客户端加载数据。
当我想使用全局Template
内部时出现此错误Meteor.isServer
:
ReferenceError: Template is not defined
at app/products.js:56:3 ...
如何从服务器端提供模板,这样我就不必等待客户端了?
我遵循本教程并用它构建了它:http: //x111.meteor.com/ 但正如您所见,加载速度非常慢,因为流星从客户端加载数据。
当我想使用全局Template
内部时出现此错误Meteor.isServer
:
ReferenceError: Template is not defined
at app/products.js:56:3 ...
如何从服务器端提供模板,这样我就不必等待客户端了?
试试这个。这个包增加了对 Meteor 中服务器端把手的支持。在 Meteor 发布服务器端渲染支持之前,它主要是作为服务器端电子邮件 html 的权宜之计。
> mrt add handlebars-server
即使代码在客户端 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}}
目前没有内置的方法可以做到这一点,但是添加服务器端模板渲染是一个计划中的功能(尽管我在路线图上还没有看到它):
这个版本的spiderable是专门为搜索引擎设计的。Meteor 的未来版本还将在初始页面加载时将 HTML 发送到 Web 浏览器。Meteor 模板系统是专门为支持这个用例而设计的。
( http://meteor.com/faq/can-meteor-serve-static-html )
虽然人们会说这违反了“仅通过网络发送数据”的理念,但对于需要良好 SEO 的网站来说,这是非常必要的,而且当您拥有相同的模板语言和框架可用于服务器和客户。
如果您在 Node.JS 框架中寻找这种类型的功能,我建议您使用 Derby.JS http://derbyjs.com/