【问题标题】:Meteor: Use in file variables to keep track of state, or use Session?Meteor:在文件变量中使用来跟踪状态,还是使用 Session?
【发布时间】:2014-08-13 06:14:20
【问题描述】:

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

var closedMenuInDesktopView = false 

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

var saving = false

我的应用程序中的一切工作正常,但我注意到在示例 Meteor 应用程序中,它们使用 Session 来跟踪应用程序中的状态变量。这样做比将javascript变量放在可以保存值的文件顶部更好吗?

【问题讨论】:

  • 如果您需要反应性,您应该只使用Session 对象而不是普通变量。这是简短的答案,但另一方面,您始终可以在没有反应的情况下进行管理。反应性将使您的代码更短,但使用传统变量将使您的代码执行得更快(尽管您必须手动更新依赖项)。

标签: meteor


【解决方案1】:

对于模板代码,我认为你有三个选择:


会话

优点

  • 反应性
  • 热代码推送 (HCP) 后状态恢复

缺点

  • 污染全局命名空间
  • 如果您有多个模板实例,则不起作用。

在什么时候使用

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

Scoped Reactivity

优点

  • 反应性
  • 促进代码隔离和重用

缺点

  • 状态在 HCP 后恢复
  • Session稍微详细一点

在什么时候使用

  • 您想使用Session 变量,但不在乎模板被销毁后是否丢失状态。就我而言,大部分时间都是这样。

正则变量(文件范围)

优点

  • 简单

缺点

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

在什么时候使用

  • 您需要一个常量。
  • 单例模板需要非反应状态。例如,跟踪某个函数是否曾经运行过。

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2010-11-27
    • 2010-09-05
    • 1970-01-01
    相关资源
    最近更新 更多