<会话/h2>
目前在我的Meteor应用程序中,我在布局文件的顶部有一个布尔变量,用于跟踪用户是否在桌面视图中关闭了菜单。
var closedMenuInDesktopView = false
同样在我的应用程序的另一个点,我在顶部使用一个布尔变量来跟踪应用程序当前是否正在保存。
var saving = false
我的应用程序中的一切都工作正常,但我注意到在示例流星应用程序中,他们使用会话来跟踪应用程序中的状态变量。是不是这样做更好,而不是把javascript变量放在文件的顶部,可以保持值?
对于模板代码,我认为您有三个选择:
<
会话/h2>
优势- 活性
- 热码推送(HCP)后状态恢复
缺点- 污染全局命名空间
- 如果你有一个以上的模板实例,
不起作用。
时使用- 您需要跨HCP的反应状态
- 你需要在模板被销毁后保持状态。例如,如果你想在你的帖子页面上记住你最近的搜索,当你回到它。
范围反应
优势- 活性
- 促进代码隔离和重用
缺点- 状态为非 HCP后恢复
- 比
Session
略冗长
时使用- 你想使用
Session
变量,但不关心模板销毁后是否丢失状态。在我的情况下,这是大部分时间。
常规变量(文件作用域)
优势简单-
缺点- 没有反应。这通常意味着更多的jQuery代码。
- 如果你有一个以上的模板实例,
不起作用。
时使用- 你需要一个常量。
- 你需要一个非反应状态的单例模板。例如,跟踪一个函数之前是否运行过。
- 污染全局命名空间
- 如果你有一个以上的模板实例, 不起作用。
时使用
- 您需要跨HCP的反应状态
- 你需要在模板被销毁后保持状态。例如,如果你想在你的帖子页面上记住你最近的搜索,当你回到它。
范围反应
优势
- 活性
- 促进代码隔离和重用
- 状态为非 HCP后恢复
- 比
Session
略冗长
时使用
- 你想使用
Session
变量,但不关心模板销毁后是否丢失状态。在我的情况下,这是大部分时间。
常规变量(文件作用域)
优势
- 简单
- 没有反应。这通常意味着更多的jQuery代码。
- 如果你有一个以上的模板实例, 不起作用。
时使用
- 你需要一个常量。
- 你需要一个非反应状态的单例模板。例如,跟踪一个函数之前是否运行过。
用var
声明的变量只能从该文件中访问。随着应用程序的增长,这更容易管理。
如果你不需要反应性,那就坚持用你的当地人。如果您需要一些活性变量,请使用Session
。否则,请查看Deps.Dependency
,了解如何创建自己的响应式变量。