示例Todos应用程序中定义的全局全大写变量是什么?

时间:2015-10-19 22:32:18

标签: javascript meteor

我正在阅读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);   
  },
//...
});

它是什么以及它与众不同?

2 个答案:

答案 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)

这似乎只是一个跟踪当前正在编辑的待办事项的变量。它在全部大写中并没有什么特别之处。