Meteor-приложения, как правило, создаются с использованием шаблонов (Templates). По сути они ничем не отличаются от обычных HTML за исключением наличия дополнительных тегов. В отличие от других языков, таких как PHP (или даже обычных HTML страниц, которые могут содержать JavaScript), Meteor разделяет шаблоны от логики, и эти шаблоны ничего не делают сами по себе. Это просто представление страниц (вью). Для того, чтобы связать данные с вью используются хелперы (Helpers), которые делают data-binding во вью. Метеор хелперы - это уже JS-код, связанный с конкретным шаблоном.
В Метеор хелперы могут существовать глобально и локально.
Глобальное подключение
При глобальном подключении хелперы можно использовать из любого места в Вашем приложении, то есть областью их видимости становится все шаблоны программы. Рассмотрим пример подключения хелпера глобально:
Template.registerHelper( 'authors', () => {
let authors = Authors.find();
if ( authors ) {
return authors;
}
});
С помощью метода registerHelper() мы передаем имя нашего хелпера "authors" и код для его вызова.
Локальное подключение
При локальном подключении хелперов, они могут использоваться только тем шаблоном, с которым он напрямую связан (подключен через import). Такие хелперы используются намного чаще, чем хелперы, подключенные глобально и вот пример их подключения:
Template.books.helpers({
authors() {
let authors = Authors.find();
if ( authors ) {
return authors;
}
}
});
В отличие от глобальных хелперов, тут нам нужно указать имя шаблона "books", для которого будет работать данный хелпер, а затем уже передается имя самого хелпера и код с его логикой.
Наследование хелперов
Также в Метеор у нас есть возможность наследовать хелперы. То есть если хелпер находится в одном JS-файле, который связан с еще одним JS-файлом, то он используется и этим файлом и всеми шаблонами, которые подключены в этот файл.
Например, есть файл шаблона example_child.html
и файл example_child.js
, в котором находится хелпер. Чтобы использовать этот хелпер в шаблоне, нам достаточно в файле example_child.js
прописать import './example_child.html';
А если мы хотим, чтобы шаблон мог использовать еще и хелпер, находящийся в example_parent.js , то нам нужно подключить (импортировать) файл с хелпером в example_child.js
, прописав: import './example_parent.js';
.
В итоге наш шаблон использует код хелперов как из файла example_child.js
, так и из './example_parent.js'
. Файл example_child.js
будет выглядеть вот так:
import './example_child.html'; import './example_parent.js';
Таким образом, мы выяснили, что хелперы являются важнейшей частью Meteor-приложений, которые обеспечивают хранение логики шаблонов и управляют ими.