Javascript Todos应用程序示例中定义的全局all caps变量是什么?
为了学习,我正在阅读流星示例应用程序“” 它们使用一些all capsJavascript 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'; }
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);