Meteor.js:如何提供 HTML 模板?
Meteor.js: How are HTML templates served?
我了解到 Meteor 不对视图模板进行任何服务器端处理。这是否意味着 HTML 按原样提供给客户端,AJAX 请求填充页面的动态部分?
就向许多用户(成百上千)提供相同的动态内容丰富的页面而言,这与服务器端模板处理相比如何?
你的问题有点宽泛,我不认为这是进行此类比较的地方,但我会尝试让你开始了解 Meteor 的方法:
Meteor 曾经与名为 Blaze 的视图层捆绑在一起。依旧是官方的视图层,不过貌似下个版本会基于React.js。无论如何,Meteor 现在与 Blaze 的耦合更松散,您可以选择任何视图层,Blaze、React 和 Angular 是正式的支持。
以上所有内容都是 templates/components 编译为 JavaScript 并在客户端呈现,基于 state/data 本地可用。
这些数据通常通过pub/sub机制获取(使用模仿MongoDB[=62=的本地缓存] 接口,称为 MiniMongo) 并通过称为 Meteor Methods 的异步 RPC 机制发生变异。
Meteor 服务器通过查看称为 OpLog 的更改流来监视数据库的更改。
当客户端请求数据(通过订阅)时,服务器获取初始数据并监视更改。如果 OpLog 更改符合订阅的条件,则会向客户端发送更新。
整个框架都使用了反应式计算的概念,其中一些数据源可以失效并重新评估依赖于它们的函数。
结合客户端路由器,您通常会得到通常所说的 SPA(单页应用程序)。
应用程序的状态(路由 + 数据 + 本地状态)通常决定在屏幕上呈现的视图。
目前,Meteor 在构建过程中捆绑了视图和其他代码,并将捆绑包发送给客户端,然后客户端拥有呈现所有视图和获取所需数据所需的所有代码。
社区正在研究一种更加模块化的方法(通过替代构建方法),预计将出现在即将发布的 Meteor 1.3 版本中。
数据传输机制是 Meteor DDP(分布式数据协议),它在可能的情况下使用 WebSocket 来传输数据在客户端和服务器之间交换,因此不需要 AJAX/Comet 调用每个状态变化。
我认为替代实现的范围太广,无法在 SO 答案中进行讨论。这实际上取决于您希望您的应用成为 "reactive" 或 "real time" 的样子。
服务器容量很大程度上取决于您的实施:
- 每个用户需要的数据量以及此数据更改的频率
- 构建查询的方式(获取所需数据并高效执行)
- 划分代码的方式
- 当然是硬件
每台服务器的连接用户数量从数百到数千不等。此处无法提供通用答案。
正在创建一个有趣的 guide 来演示使用 Meteor 的最佳实践。
我了解到 Meteor 不对视图模板进行任何服务器端处理。这是否意味着 HTML 按原样提供给客户端,AJAX 请求填充页面的动态部分?
就向许多用户(成百上千)提供相同的动态内容丰富的页面而言,这与服务器端模板处理相比如何?
你的问题有点宽泛,我不认为这是进行此类比较的地方,但我会尝试让你开始了解 Meteor 的方法:
Meteor 曾经与名为 Blaze 的视图层捆绑在一起。依旧是官方的视图层,不过貌似下个版本会基于React.js。无论如何,Meteor 现在与 Blaze 的耦合更松散,您可以选择任何视图层,Blaze、React 和 Angular 是正式的支持。
以上所有内容都是 templates/components 编译为 JavaScript 并在客户端呈现,基于 state/data 本地可用。
这些数据通常通过pub/sub机制获取(使用模仿MongoDB[=62=的本地缓存] 接口,称为 MiniMongo) 并通过称为 Meteor Methods 的异步 RPC 机制发生变异。
Meteor 服务器通过查看称为 OpLog 的更改流来监视数据库的更改。
当客户端请求数据(通过订阅)时,服务器获取初始数据并监视更改。如果 OpLog 更改符合订阅的条件,则会向客户端发送更新。
整个框架都使用了反应式计算的概念,其中一些数据源可以失效并重新评估依赖于它们的函数。
结合客户端路由器,您通常会得到通常所说的 SPA(单页应用程序)。
应用程序的状态(路由 + 数据 + 本地状态)通常决定在屏幕上呈现的视图。
目前,Meteor 在构建过程中捆绑了视图和其他代码,并将捆绑包发送给客户端,然后客户端拥有呈现所有视图和获取所需数据所需的所有代码。
社区正在研究一种更加模块化的方法(通过替代构建方法),预计将出现在即将发布的 Meteor 1.3 版本中。
数据传输机制是 Meteor DDP(分布式数据协议),它在可能的情况下使用 WebSocket 来传输数据在客户端和服务器之间交换,因此不需要 AJAX/Comet 调用每个状态变化。
我认为替代实现的范围太广,无法在 SO 答案中进行讨论。这实际上取决于您希望您的应用成为 "reactive" 或 "real time" 的样子。
服务器容量很大程度上取决于您的实施:
- 每个用户需要的数据量以及此数据更改的频率
- 构建查询的方式(获取所需数据并高效执行)
- 划分代码的方式
- 当然是硬件
每台服务器的连接用户数量从数百到数千不等。此处无法提供通用答案。
正在创建一个有趣的 guide 来演示使用 Meteor 的最佳实践。