Meteor.js:如何提供HTML模板?

时间:2015-12-21 12:07:42

标签: meteor meteor-blaze

我读到Meteor没有对视图模板进行任何服务器端处理。这是否意味着HTML按原样提供给客户端,AJAX请求填充页面的动态部分?

与为多个用户(数百个)提供相同的动态内容丰富的页面相比,这与服务器端模板处理相比如何?

1 个答案:

答案 0 :(得分:1)

你的问题有点广泛,我不认为这是比较的地方,但我会尝试让你开始研究Meteor的方法:

Meteor曾与一个名为 Blaze 的视图层捆绑在一起。它仍然是官方视图层,但似乎下一个版本将基于React.js。无论如何,Meteor现在更加宽松地与Blaze结合,你可以选择任何视图层,Blaze, React Angular 正式支持。

以上所有都是编译为JavaScript 并在客户端上呈现的模板/组件,基于本地可用的状态/数据。

此数据通常通过 pub / sub 机制获得(使用模仿 MongoDB 接口的本地缓存,称为 MiniMongo )和通过称为Meteor Methods的异步RPC机制进行突变。

Meteor服务器通过查看名为OpLog的更改流来监视数据库的更改。

当客户端请求数据(通过订阅)时,服务器将获取初始数据并监视更改。如果OpLog更改符合订阅条件,则会向客户端发送更新。

在整个框架中使用了Reactive Computations的概念,其中一些数据源可以无效并重新评估依赖于它们的函数。

结合客户端路由器,您经常会得到通常所说的SPA(单页应用程序)。

应用程序的状态(路由+数据+本地状态)通常指示在屏幕上呈现的视图。

目前,Meteor在构建过程中捆绑了视图和其他代码,并将捆绑包发送到客户端,然后客户端拥有渲染所有视图并获取所需数据所需的所有代码。

社区正在研究一种更模块化的方法(通过替代构建方法),预计将在即将发布的Meteor 1.3版本中进行调查。

数据传输机制是Meteor DDP (分布式数据协议),它尽可能使用 WebSocket 在客户端和服务器之间来回传输数据,所以不需要AJAX / Comet调用每个状态变异。

我认为替代实施的范围过于宽泛,无法在SO答案中讨论。这实际上取决于"反应"或"实时"你想要你的应用程序。

服务器容量在很大程度上取决于您的实施:

  • 每个用户需要的数据量以及此数据更改的频率
  • 构建查询的方式(获取所需数据并有效地执行此操作)
  • 您对代码进行分区的方式
  • 硬件,当然

每台服务器可以有数百到10个连接用户。这里没有提供通用答案的真正方法。

正在创建一个有趣的guide来演示使用Meteor的最佳实践。