Ответ 1
Здесь вы можете найти полезную функцию ведения журнала. Он регистрирует количество обращений к каждому шаблону в консоли. Вы знаете, что если шаблон загружается после загрузки начальной страницы, это связано с изменением источника реактивных данных, который он использует. Либо этот реактивный источник данных мог быть доступен в вспомогательном методе, либо шаблон является элементом списка (т.е. Внутри вспомогательного блока {{#each ...}}
), и элемент списка был добавлен/перемещен/удален/изменен. Также имейте в виду, что дочерние шаблоны вызывают их родительский визуализированный обратный вызов, когда ребенок визуализируется или повторно отображается. Таким образом, это может смутить вас в мысли, что родитель фактически был снят с DOM и возвращен, но это не так.
Итак, вы можете вызвать эту функцию в конце вашего кода клиента, чтобы увидеть количество просмотров:
function logRenders () {
_.each(Template, function (template, name) {
var oldRender = template.rendered;
var counter = 0;
template.rendered = function () {
console.log(name, "render count: ", ++counter);
oldRender && oldRender.apply(this, arguments);
};
});
}
РЕДАКТИРОВАТЬ. Вот способ обернуть курсор поиска, чтобы записать все изменения в курсор на консоль. Я просто написал аналогичную функцию для этого нового пакета, над которым я работаю, называемого реактивного видения. Надеюсь, скоро выйдет.
var wrappedFind = Meteor.Collection.prototype.find;
Meteor.Collection.prototype.find = function () {
var cursor = wrappedFind.apply(this, arguments);
var collectionName = this._name;
cursor.observeChanges({
added: function (id, fields) {
console.log(collectionName, 'added', id, fields);
},
changed: function (id, fields) {
console.log(collectionName, 'changed', id, fields);
},
movedBefore: function (id, before) {
console.log(collectionName, 'movedBefore', id, before);
},
removed: function (id) {
console.log(collectionName, 'removed', id);
}
});
return cursor;
};