【问题标题】:How does the Meteor JavaScript framework work? [closed]Meteor JavaScript 框架是如何工作的? [关闭]
【发布时间】:2012-04-30 03:49:31
【问题描述】:

我遇到了Meteor,虽然它看起来很令人兴奋,但我想知道它是如何工作的。我的意思是传统的 Web 应用程序是这样工作的: 您在服务器上有脚本,这些脚本从数据库中获取数据并将其动态添加到网页中,并且用户提交的数据通过其他一些脚本添加到数据库中。

但是这些东西在 Meteor 中是如何工作的呢? Meteor 的不同部分是如何相互关联的?

【问题讨论】:

  • 这是一个建设性的事实问题。任何有效的答案都必须“有事实、参考资料或特定专业知识的支持”。显然 casperOne 误解了问题或将问题指定为不具建设性的标准。​​
  • 但是这个问题很可能会引起“扩展讨论”并且没有“答案”的答案。
  • @durron597 我想你是说这个问题的答案非常大(如果我误解了,请纠正我)。我可以看到,但这与“没有建设性”不同。下面出现的样板摘要中“非建设性”的定义清楚地表明“非建设性”标签适用于非客观问题。这个问题是100%客观的。 Meteor 以它的工作方式工作。如果这里开始出现多种意见,那么除了其中一个之外,其他所有意见都将是错误的。
  • @mplungjan 我发现这些答案都不令人满意,因为它们都没有充分解决“在线数据”的 Meteor 原则。Meteor 不会通过网络发送 HTML。服务器发送数据并让客户端渲染它。”七大原则中的第一大原则。

标签: javascript node.js web-applications meteor


【解决方案1】:

免责声明:此答案描述 MeteorMeteor Server 的 JavaScript 客户端库。它最初是由于问题中的歧义而添加的,并且可能有助于澄清搜索类似答案但不确定差异的访问者所面临的类似歧义。

要了解Meteor JavaScript framework,请参阅this answerxer0x

正如 Meteor Server 的文档中所述,Meteor 是 Comet 的实现。 Comet 又是 AJAX 的对应物。

在 AJAX 的情况下,您通常会在客户端认为需要这样做时发出请求。要从服务器提取更新,您需要调用服务器,例如。每 5 秒一次。

在 Comet 的情况下,来自服务器的更新更快,因为连接是持久的。连接是由客户端建立的,就像在 AJAX 中一样,但服务器直到它有一些更新或达到执行限制(服务器上的脚本可能有执行限制)才会响应。

在 Meteor 的情况下,您只需获得需要一些特定服务器端代码(如 Meteor 服务器)和客户端上的适当代码(在这种情况下它看起来像 Meteor 类)的恒定数据流。

【讨论】:

  • 有 Meteor,也有 Meteor Server。我感觉最初的问题是关于前者的,而这个答案是关于后者的? meteor.commeteorserver.org
  • 不,Meteor.com 的东西是 Comet 的高级形式。具体它使用长轮询,您可以在 chrome 开发工具中观看。
  • @ile: 是的,有一个名为 Meteor (github.com/meteor/meteor) 的 JavaScript 框架,还有一个 Meteor.js,它是 Meteor 的客户端部分服务器 (meteorserver.org/client-docs)。我相信这个问题太模糊了,无法说出这些 OP 真正想到的是哪一个。
  • @ile 实际上,我对meteor.com 很感兴趣。在您发表评论之前,我实际上并不知道meteorserver.org。
  • meteor.js 框架不是meteor http 服务器。尽管制作框架的人的命名选择很差。请参阅meteor.com 了解更多信息。
【解决方案2】:

Meteor 是一个优雅地实时更新 HTML 的框架。

Meteor 的美妙之处在于您只需要创建模板和数据模型。通常的样板代码的其余部分被隐藏起来。您不需要编写所有同步代码。

Meteor 的关键部件可以使用这些部件自己构建:

  • 它提供了模板,当您的数据模型更新时会自动更新。这通常使用Backbone.jsEmber.jsKnockout.js 或其他工具来完成。

  • 客户端/服务器消息传递是通过websockets 使用socks.jssocket.io 之类的方式完成的。

  • 与 MongoDB 的客户端连接真的很酷。它将 MongoDB 服务器驱动程序复制到客户端。不幸的是,我上次检查时,他们仍在努力保护此数据库连接。

  • 延迟补偿只是先更新客户端模型,然后将更新发送到服务器-服务器。

您可以在Meteor 网站或on GitHub 上找到其他精美的作品。

【讨论】:

  • 虽然很好,但这并不能真正解决问题。
  • 也许它确实回答了隐藏在问题中的问题
  • 这个答案清楚地表明,meteor 使用 websockets 进行所有客户端/服务器通信。我认为这也回答了这个问题。
  • 在 v0.9 中流星 js 和节点 js 是否仍然相关?
【解决方案3】:

由于依赖跟踪系统,实时数据更新的所有魔力正在发生。可以在文档的Tracker 部分找到有关其工作原理的说明。

【讨论】:

猜你喜欢
  • 2022-01-23
  • 2011-10-11
  • 2013-01-16
  • 2013-08-11
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2012-11-19
相关资源
最近更新 更多