我是 meteor 新手。我发现了 Meteor Streams 包,它允许“Meteor 的实时消息传递”。它可以执行以下操作:
Meteor Stream 是跨 meteor 的分布式 EventEmitter。它可以用过滤器进行管理,并具有良好的安全模型(继承自现有的 meteor 安全模型)。您可以创建任意数量的流,并且它独立于 mongo。
通过 Meteor Streams,您可以在之间进行通信
客户对客户 服务器到客户端 客户端到服务器 服务器到服务器
有一个在实时黑板上使用它的示例,用户可以在其中一起绘图。作为一个 Meteor 新手,出于无知,我问,使用这样的东西和仅仅更新 session (即 Session.set、Session.get)有什么区别。正如我所看到的 session 的使用,两个浏览器可以打开并使用 Session.set 的相同信息进行更新。那么在两个人绘画的环境中,为什么不能使用 Session 设置而不是 Meteor 集合或 Streams 来完成呢?我不明白 session 设置是什么?我相信我可能错误地认为可以使用 session 设置来代替,我只是想知道为什么。它将帮助我理解 Meteor 中的 Session 和 Meteor Streams 包。
最佳答案
session 变量是一个快速创建的变量,因此您可以 react 性地更改模板中的内容。
例如,您的模板中有以下内容:
<template name="hello">
{{message}}
</template>
有了模板助手
Template.hello.message = function() { return Session.get("message") }
如果您执行类似 Session.set("message", "Hi There")
的操作,html 会显示 Hi There。这个想法是您可以使用它轻松更改 HTML。它是一种单向数据绑定(bind)。
Meteor 流可帮助您在浏览器和服务器(或服务器和客户端之间的其他组合)之间进行通信,以便您可以来回发送消息,但它不会帮助您更改 HTML。
同样,Session 不会帮助您在浏览器和服务器之间进行通信,但当您的事件中有结果时,它可以帮助更改 HTML,或者在 javascript 代码和用户看到的 html 之间以 react 方式传递数据。
以黑板为例,您可以共享其他用户绘制的数据,但它不会帮助您在黑板上绘制。 (对于黑板,您可以使用流,因为您正在使用 JavaScript 更新 Canvas ,因此不需要 session )。您不能单独使用 Session(或者不需要,因为它是 Canvas ) - 但您需要 Meteor 流来与其他用户进行通信。
您也可以使用 JQuery 之类的东西来更新您的 html!使用 session 是迄今为止最简单的,因为您可以重新使用它,并且只需更新一件事即可更改所有其他内容。
关于javascript - 设置Session的变量和Meteor Streams有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21906256/