我读到Meteor没有对视图模板进行任何服务器端处理。这是否意味着HTML按原样提供给客户端,AJAX请求填充页面的动态部分?
与为多个用户(数百个)提供相同的动态内容丰富的页面相比,这与服务器端模板处理相比如何?
答案 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的最佳实践。