Пусть для JavaScript’a существует достаточное число фреймворков, создавать динамические веб-приложения все же достаточно сложно. А когда дело доходит до работы с DOM, событиями и прочими прелестями HTML, JS и CSS, то код становится нереально большим и сложным в поддержке. Backbone призван решить эту проблему. Как написано на сайте русской документации Backbone:
Backbone.js придает структуру веб-приложениям с помощью моделей с биндингами по ключу и пользовательскими событиями, коллекций с богатым набором методов с перечислимыми сущностями, представлений с декларативной обработкой событий; и соединяет это все с вашим существующим REST-овым JSON API.
Что ж, было бы неплохо попробовать его в действии.
Основа
За HTML-основу один из сайтов предлагает следующее:
|
|
Все необходимое подключено и мы можем начать наши эксперименты.
Связывание вида и его рендера
Фреймворк позволяет назначать DOM элементам свои шаблоны, рендер и многое другое. Давайте попробуем.
Для начала создадим DOM элемент:
|
|
Перейдем к JS. Для начала создадим пустой вид:
|
|
Затем нам необходимо указать функцию рендера:
|
|
Но сама себя эта функция не вызовет, ее нужно вызвать, например при инициализации:
|
|
Осталось создать объект вида для дальнейшей работы:
|
|
Шаблоны
Так как Backbone жестко завязан на underscore.js, мы можем воспользоваться множеством различных утилит и функций из нее. Так, например, мы можем использовать шаблоны. Синтаксис вызова такой: _.template(шаблон, [данные], [параметры])
.
Итак, добавим в наш вид поле шаблона:
|
|
Обратите внимание на <%= who %>
. Это параметр, который будет загружен из аргумента “данные”. Все, что нам нужно, вызвать шаблон в рендере. Например так:
|
|
Разницы между <%= %>
и <%- %>
нету. Однако при помощи <% %>
мы можем выполнять любой JS код.
Заключение
Изначально кажется, что мы проделали слишком много действий лишь для того, чтобы вывести стандартную надпись Hello World
. Да, это так. Но продолжив изучение фреймворка и используя его в крупном веб-приложении, мы несомненно увидим, что мы сохранили много времени и сил, не пытаясь изобретать велосипед при создании динамического приложения. Далее в планах познакомится с фреймворком глубже, а также обратить внимание на Angular.js - фреймворк с похожей задачей - упростить создание динамических веб-приложений.