Meteor:用于文件变量来跟踪状态,还是使用Session?

时间:2014-08-12 14:30:12

标签: meteor

目前在我的Meteor应用程序中,我的布局文件顶部有一个布尔变量,用于跟踪用户在桌面视图中关闭菜单的情况。

var closedMenuInDesktopView = false 

另外在我的应用程序的另一点上,我在顶部使用一个布尔变量来跟踪应用程序当前是否正在保存。

var saving = false

我的应用程序中的所有内容都运行正常,但我注意到Meteor应用程序中的示例,他们使用Session来跟踪应用程序中的状态变量。这样做是否更好,而不是将javascript变量放在可以保存值的文件的顶部?

2 个答案:

答案 0 :(得分:3)

对于模板代码,我认为您有三种选择:


会话

优点

  • 活性
  • 在热码推送(HCP)
  • 后恢复状态

缺点

  • 污染全局命名空间
  • 如果您有多个模板实例,则无效。

时使用
  • 您需要跨HCP的反应状态
  • 模板销毁后需要保留状态。例如,如果您想在回到帖子页面时记住上次搜索的话。

Scoped Reactivity

优点

  • 活性
  • 促进代码隔离和重用

缺点

  • HCP
  • 后状态恢复
  • Session
  • 稍微冗长

时使用
  • 您想使用Session变量,但在模板被销毁后丢失状态并不在意。在我的情况下,这是大部分时间。

常规变量(文件范围)

优点

  • 简单

缺点

  • 没有反应。这通常意味着更多的jQuery代码。
  • 如果您有多个模板实例,则无效。

时使用
  • 你需要一个常数。
  • 单例模板需要非反应状态。例如,跟踪某个函数以前是否曾运行过。

答案 1 :(得分:1)

您使用var声明的变量只能从该文件中访问。随着应用程序的增长,这更易于管理。

会话变量具有被动反应的优势。它们经常出现在示例中,因为它们具有干净的语法,并触发DOM更新。出于与avoid globals相同的原因,最好限制使用会话变量。

如果您不需要反应,请坚持与当地人保持联系。如果您需要一些反应变量,请使用Session。否则,请查看Deps.Dependency以了解如何制作自己的反应变量。