Meteor JavaScript框架如何工作?[关闭]


108

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

但是这些在流星中如何运作?流星的不同部分之间如何相互关联?



8
这是一个建设性的事实问题。任何有效的答案都将得到“事实,参考或特定专业知识的支持”。显然,casperOne误解了该问题或将该问题指定为非建设性的标准。
查理·弗劳斯

3
但是这个问题可能会引起“扩展讨论”,并且没有“答案”答案。
durron597

9
@ durron597我认为您是在说这个问题的答案非常大(如果我误解了,请纠正我)。我可以看到,但这与“不具有建设性”不同。在下面出现的摘要中,“非建设性”的定义清楚地表明“非建设性”标记是针对非客观问题的。这个问题是100%客观的。流星的运作方式。如果这里开始出现多种观点,那么除了其中一种观点之外,其他所有观点都会出错。
Charlie Flowers

@mplungjan我发现这些答案都不能令人满意,因为它们都不能充分满足流星原则:“在线数据。流星无法通过网络发送HTML。服务器发送数据并让客户端呈现。” 7条原则中的第一条原则。
亚历山大·米尔斯

Answers:


81

流星是一个框架,可以优雅地实时更新HTML。

流星的美丽之处在于您只需要创建模板和数据模型。其余的常规样板代码的其余部分都被隐藏了。您无需编写所有同步代码。

流星的关键部分可以使用以下这些部分自己构建:

  • 它提供了在数据模型运行时自动更新的模板。通常使用Backbone.jsEmber.jsKnockout.js或其他工具来完成此操作。

  • 客户机/服务器的消息是通过做的WebSockets使用类似socks.jssocket.io

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

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

您还可以在Meteor网站或GitHub上找到其他整洁的片段。


10
不错,但这并不能真正解决问题。
囚犯零2012年

2
也许它确实回答了问题中隐藏的问题
穆罕默德·乌默尔

1
该答案清楚地表明,流星使用websocket完成了所有客户端/服务器通信。我认为这也回答了这个问题。
Usama Ahmed 2014年

在v0.9中流星js和节点js是否仍然相关?
yozawiratama 2014年

28

免责声明:此答案描述了MeteorMeteor服务器的 JavaScript客户端库。它最初是由于问题中的歧义而添加的,目的可能是澄清寻找相似答案的访问者所面临的相似歧义,但不确定其区别。

要了解流星JavaScript框架,请参阅此答案xer0x

如Meteor Server的文档所述,Meteor是Comet的实现。反过来,Comet是AJAX的对等物。

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

如果是Comet,由于连接是持久的,因此来自服务器的更新会更快。与AJAX一样,连接是由客户端建立的,但是服务器直到它进行了一些更新或达到执行限制时才响应(服务器上的脚本可能具有执行限制)。

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


1
有流星,也有流星服务器。我感觉最初的问题是关于前者的,这个答案是关于后者的?meteor.com and meteorserver.org
ile

2
不,Meteor.com的东西是彗星的高级形式。具体来说,它使用长时间轮询,您可以在chrome开发工具中观看它。
wmil 2012年

1
@ile:是的,有一个名为Meteor的 JavaScript框架(github.com/meteor/meteor),还有Meteor.js,它是Meteor Server的客户端部分(meteorserver.org/client-docs)。我认为这是一个过于模棱两可的问题,无法确定其中哪一个是OP真正想到的。
塔德克2012年

5
@ile实际上,我对meteor.com感兴趣。在您发表评论之前,我实际上并不了解meteorserver.org。
贾廷

2
meteor.js框架不是流星http服务器。尽管创建框架的人的命名选择不佳。有关更多信息,请参见meteor.com
xer0x 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.