Backbone.js предоставляет лёгкий, структурированный подход к разработке клиентских приложений на JavaScript. Одной из ключевых сущностей фреймворка являются коллекции (Collections), которые обеспечивают эффективное управление группами моделей.
Коллекции служат для хранения и управления набором моделей одного типа. Они предоставляют методы для добавления, удаления, сортировки и фильтрации моделей, а также позволяют удобно работать с данными как с единым объектом, а не с отдельными экземплярами моделей.
Главные цели использования коллекций:
Коллекция создаётся через расширение базового класса
Backbone.Collection. Каждая коллекция может быть привязана
к конкретной модели через свойство model.
var Task = Backbone.Model.extend({
defaults: {
title: '',
completed: false
}
});
var TaskList = Backbone.Collection.extend({
model: Task
});
var tasks = new TaskList();
В этом примере создаётся коллекция TaskList, которая
будет содержать объекты модели Task.
Коллекции предоставляют набор встроенных методов для работы с элементами:
add(model) – добавление одной или нескольких моделей в
коллекцию.remove(model) – удаление модели из коллекции.get(id) – получение модели по идентификатору.at(index) – получение модели по позиции в
коллекции.reset(models) – замена всех моделей коллекции новым
набором.Пример добавления и удаления:
var task1 = new Task({ title: 'Сделать тестирование' });
tasks.add(task1);
tasks.remove(task1);
Коллекции в Backbone.js активно используют событийную модель. Изменения в коллекции или её моделях вызывают события, на которые можно подписываться для обновления интерфейса или выполнения логики приложения.
Наиболее часто используемые события:
add – добавление модели в коллекцию.remove – удаление модели.reset – полная замена набора моделей.sort – изменение порядка элементов коллекции.tasks.on('add', function(model) {
console.log('Добавлена задача:', model.get('title'));
});
Коллекции поддерживают встроенные механизмы сортировки через свойство
comparator:
var SortedTasks = Backbone.Collection.extend({
model: Task,
comparator: 'title' // сортировка по названию
});
Методы фильтрации и поиска включают:
filter(predicate) – возвращает массив моделей,
удовлетворяющих условию.findWhere(attributes) – возвращает первую модель с
указанными атрибутами.where(attributes) – возвращает все модели с заданными
атрибутами.var completedTasks = tasks.where({ completed: true });
Коллекции поддерживают синхронизацию с сервером через стандартные RESTful-запросы. Основные методы:
fetch() – загрузка моделей с сервера.create(attributes) – создание новой модели и её
сохранение на сервере.sync() – низкоуровневая синхронизация данных.tasks.fetch({
success: function(collection) {
console.log('Загружено задач:', collection.length);
}
});
Серверные ответы автоматически конвертируются в модели коллекции, что позволяет легко управлять данными на клиенте.
Коллекции в Backbone.js выполняют функцию организатора моделей, обеспечивая согласованность данных, события на изменения и удобные интерфейсы для сортировки, фильтрации и синхронизации. Они позволяют строить клиентские приложения с ясной архитектурой и минимальной связностью между отдельными компонентами, облегчая управление сложными наборами данных и их визуализацией.