Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Todos应用程序示例中定义的全局all caps变量是什么?_Javascript_Meteor - Fatal编程技术网

Javascript Todos应用程序示例中定义的全局all caps变量是什么?

Javascript Todos应用程序示例中定义的全局all caps变量是什么?,javascript,meteor,Javascript,Meteor,为了学习,我正在阅读流星示例应用程序“” 它们使用一些all capsvar并将它们存储在会话中 它在第一行定义: var EDITING_KEY = 'EDITING_TODO_ID'; 而且用了很多次。例如: Template.todosItem.helpers({ //... editingClass: function() { return Session.equals(EDITING_KEY, this._id) && 'editing'; }

为了学习,我正在阅读流星示例应用程序“”

它们使用一些all caps
var
并将它们存储在
会话中

它在第一行定义:

var EDITING_KEY = 'EDITING_TODO_ID';
而且用了很多次。例如:

Template.todosItem.helpers({
  //...
  editingClass: function() {
    return Session.equals(EDITING_KEY, this._id) && 'editing'; 
  }
});

它是什么?它的特殊之处是什么?

这似乎只是一个跟踪当前正在编辑的待办事项的变量。戴着帽子没什么特别的

EDITING_KEY
是在
todos item.js
中定义的一个文件范围的“常量”,用于引用全局反应性持久客户端字典中当前编辑的项minimongo
\u id

它用于避免在任何地方反复写入相同的字符串,在这种情况下,
'EDITING\u TODO\u ID'
。在任何地方编写都可能导致错误,比如模板没有更新,因为您编写了
'EDITING'
而不是
'EDITING'

由于
Session
只需要一个字符串作为第一个参数,因此这两行的作用非常相同:

Session.get(EDITING_KEY)
Session.get('EDITING_TODO_ID')
示例项目多次使用此选项以避免错误,并使自动完成变得更好。
您可以在其他文件中看到更多示例,例如在
app body.js
的顶部:

var MENU_KEY = 'menuOpen';
Session.setDefault(MENU_KEY, false);

var USER_MENU_KEY = 'userMenuOpen';
Session.setDefault(USER_MENU_KEY, false);

var SHOW_CONNECTION_ISSUE_KEY = 'showConnectionIssue';
Session.setDefault(SHOW_CONNECTION_ISSUE_KEY, false);
您可以更进一步,在全局密钥注册表中定义这些密钥,以确保没有重复的密钥,例如,具有基础密钥的密钥。这对训练来说可能是一件有趣的事情

因为Meteor现在支持ES2015,所以应该重写它以避免意外地覆盖它

var MENU_KEY = 'menuOpen';
Session.setDefault(MENU_KEY, false);

var USER_MENU_KEY = 'userMenuOpen';
Session.setDefault(USER_MENU_KEY, false);

var SHOW_CONNECTION_ISSUE_KEY = 'showConnectionIssue';
Session.setDefault(SHOW_CONNECTION_ISSUE_KEY, false);