javascript - 设置Session的变量和Meteor Streams有什么区别?

标签 javascript meteor

我是 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/

相关文章:

javascript - element.setAttribute ('prop' ,value) vs element.prop = value

javascript - Meteor.Error 正文不能超过 3000 个字符

meteor - Modulus 上 MeteorJS App 的 Websocket 握手错误

javascript - 从单个集合发布和订阅时没有搜索结果

javascript - Office 365 Calendar API 基于创建事件触发对应用程序的调用

mongodb - 对于按自定义字段排序的最近文档,什么是合适的 Pub/Sub?

javascript - Canvas 调整大小-IOS HTML5 应用程序-(图表 JS)

javascript - 为什么 data-position ="fixed"data-tap-toggle ="false"不起作用?

javascript - 是否有一种跨浏览器的方式来通过 css 在点击时扩展文本?

javascript - <autofocus> 在刷新页面之前无法重复获得焦点