我正在阅读Meteor示例应用程序" todos"用于学习目的。
他们使用全部大写var
并将其存储在Session
中
它在第一行定义:
var EDITING_KEY = 'EDITING_TODO_ID';
多次使用。例如:
Template.todosItem.helpers({
//...
editingClass: function() {
return Session.equals(EDITING_KEY, this._id) && 'editing';
}
});
Template.todosItem.events({
'blur input[type=text]': function(event) {
if (Session.equals(EDITING_KEY, this._id))
Session.set(EDITING_KEY, null);
},
//...
});
它是什么以及它与众不同?
答案 0 :(得分:3)
EDITING_KEY
是一个文件范围的"常量"在todos-item.js
中定义,用于引用全局反应持久客户端字典Session
中当前编辑的项目minimongo _id
。
它用于避免在任何地方一次又一次地写入相同的字符串,在这种情况下'EDITING_TODO_ID'
。在任何地方写它可能会导致由于错误导致的错误,例如模板未更新,因为您编写的是'EDITNG'
而不是'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);
您可以进一步定义全局密钥注册表中的那些,以确保没有重复的密钥,例如使用基础Set
。这对培训来说可能是一件有趣的事情。
由于Meteor现在支持ES2015,因此应将其重写为const EDITING_KEY = 'EDITING_TODO_ID'
以避免意外覆盖它。
答案 1 :(得分:0)
这似乎只是一个跟踪当前正在编辑的待办事项的变量。它在全部大写中并没有什么特别之处。