Backbone.js не предоставляет встроенных средств для форматирования чисел и дат, так как основной фокус фреймворка направлен на организацию структуры приложений: модели, коллекции, представления и маршрутизация. Тем не менее, в реальных приложениях форматирование чисел и дат является критически важным для отображения данных в удобочитаемом виде. Для решения этой задачи Backbone тесно интегрируется с внешними библиотеками и собственными методами моделей и представлений.
Форматирование чисел обычно требуется для отображения валют, процентов или больших чисел с разделителями. Backbone-модель может предоставлять методы для представления данных в нужном формате:
var Product = Backbone.Model.extend({
defaults: {
price: 0,
quantity: 0
},
formattedPrice: function() {
return this.get('price').toLocaleString('ru-RU', { style: 'currency', currency: 'RUB' });
},
formattedQuantity: function() {
return this.get('quantity').toLocaleString();
}
});
var product = new Product({ price: 123456.78, quantity: 1500 });
console.log(product.formattedPrice()); // "123 456,78 ₽"
console.log(product.formattedQuantity()); // "1 500"
Ключевые моменты:
toLocaleString() позволяет локализовать
формат числа без сторонних библиотек.style и currency обеспечивают
корректное отображение денежных единиц.Для более сложного форматирования можно использовать библиотеки вроде Numeral.js, интегрируя их прямо в методы модели:
var Product = Backbone.Model.extend({
formattedPrice: function() {
return numeral(this.get('price')).format('0,0.00 $');
}
});
Backbone-модели часто содержат временные метки или объекты Date. Для
отображения дат в удобном формате также рекомендуется использовать
методы модели или специализированные библиотеки (например,
Moment.js или встроенные возможности
Intl.DateTimeFormat).
var Event = Backbone.Model.extend({
defaults: {
date: new Date()
},
formattedDate: function() {
return this.get('date').toLocaleDateString('ru-RU', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric'
});
},
formattedTime: function() {
return this.get('date').toLocaleTimeString('ru-RU', {
hour: '2-digit',
minute: '2-digit'
});
}
});
var event = new Event({ date: new Date('2025-12-29T15:30:00') });
console.log(event.formattedDate()); // "понедельник, 29 декабря 2025 г."
console.log(event.formattedTime()); // "15:30"
Ключевые моменты:
toLocaleDateString и toLocaleTimeString
позволяют локализовать формат даты и времени под конкретную
культуру.Представления Backbone используют методы модели для получения уже отформатированных данных. Это позволяет отделить логику отображения от логики хранения данных:
var ProductView = Backbone.View.extend({
render: function() {
this.$el.html(
'<p>Цена: ' + this.model.formattedPrice() + '</p>' +
'<p>Количество: ' + this.model.formattedQuantity() + '</p>'
);
return this;
}
});
var productView = new ProductView({ model: product });
$('body').append(productView.render().el);
Преимущества такого подхода:
Для крупных приложений часто применяется комбинация Backbone.js с библиотеками форматирования чисел и дат:
Пример с Day.js:
var Event = Backbone.Model.extend({
formattedDate: function() {
return dayjs(this.get('date')).format('DD MMMM YYYY, dddd');
}
});
Backbone.js как каркас позволяет сконцентрироваться на структуре приложения, а форматирование чисел и дат реализуется через методы моделей и интеграцию с современными библиотеками JavaScript. Такой подход обеспечивает чистоту кода, повторное использование методов и легкость поддержки локализации.