现在在 Microscope 下,用户在 App 中的当前状态是完全包含在 URL 里面,并且需要从 URL (或者数据库)里面寻找。
但是在许多情况下,你需要存储一些只对应于当前用户的应用程序版本的短暂状态(例如,一个元素是否显示或隐藏)。利用 Session 可以很方便地去做到这一点。
Session 是一个全局的响应式数据存储。它全局性的意思是全局的单例对象:这个 Session 对象在全局都是可被访问到。全局变量通常被认为不是一件什么好事,Session 可以作为中央通信总线用于项目的不同地方。
修改session
Session.set('mySession',item)
mySession为session名称,item为session中要存储的数据,方法在本地存储 item数据,通过Session.get('mySession')来返回session
session的自动跟新需要使用跟踪器(tracker)
Deps是老版本的tracker;
使用tracker前需要安装tracker包,meteor add tracker
自动运行(Autorun)机制。顾名思义,每一次 autorun 上下文中的响应式数据源发生变化的时候,autorun 函数就会自动运行。
Tracker.autorun方法用于持续关注 tranckSession 的值。每当这个对象的变化,该模板将自动更新。
如果我们手动去重载浏览器窗口,自然就会丢失我们的 Session 变量(因为这将会创建一个新的会话)。另一方面,如果我们是引发动态代码重载(即,通过修改并保存我们的源文件)去重新加载页面,Session 变量却仍然存在。
因此,如果使用 Session 变量来保存用户状态,用户几乎不会察觉到动态代码重载的发生。因为它将保留所有 Session 变量的值。这可以使我们在部署新版本的时候,用户发生中断的机会降到最低。
再想一想,这意味着,只要我们做到用 URL 和 Session 把所有状态保存下来,那么当更新版本的时候,客户端正在运行的应用程序就可以动态重载,不丢失任何数据。
注:该meteor教程为之前本人学习meteor时做下的记录文件,故会有较多的截图示意,当然,一些多余的console.log()请各位多多包涵,希望这些经验可以帮助到大家,另外,希望大家在编码时有良好的编码习惯。谢谢。