流星:使用in文件变量来跟踪状态,或者使用Session



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

var closedMenuInDesktopView = false 

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

var saving = false

我的应用程序中的一切都工作正常,但我注意到在示例流星应用程序中,他们使用会话来跟踪应用程序中的状态变量。是不是这样做更好,而不是把javascript变量放在文件的顶部,可以保持值?

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


<

会话/h2>

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

缺点
  • 污染全局命名空间
  • 如果你有一个以上的模板实例,
  • 不起作用。

时使用
  • 您需要跨HCP的反应状态
  • 你需要在模板被销毁后保持状态。例如,如果你想在你的帖子页面上记住你最近的搜索,当你回到它。

范围反应

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

缺点
  • 状态为 HCP后恢复
  • Session略冗长

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

常规变量(文件作用域)

优势
    简单

缺点
  • 没有反应。这通常意味着更多的jQuery代码。
  • 如果你有一个以上的模板实例,
  • 不起作用。

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

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

会话变量具有响应性的优点。它们经常出现在示例中,因为它们具有干净的语法,并触发DOM更新。与避免使用全局变量的原因相同,最好限制使用会话变量。

如果你不需要反应性,那就坚持用你的当地人。如果您需要一些活性变量,请使用Session。否则,请查看Deps.Dependency,了解如何创建自己的响应式变量。

相关内容

最新更新