TODO
- Сделать синхронные модели и компиляцию
.jsw
-файлов. - Привести клиентский код в соответствие с документацией.
- Сделать автоинкремент
id
.
WAML
WAML - это JavaScript-фреймворк, добавляющий определенный набор тегов и атрибутов к стандартному HTML, а также изменяющий поведение некоторых стандартных тегов.
router
Если атрибут href
начинается с :
, то происходит скрытый переход, то есть все обработчики срабатывают, но url в адресной строке не меняется.
view
view - блок, имеющий несколько состояний, которые меняются при возникновении определенных событий.
Атрибуты
name
: Определяет имя элемента.animation
: Указывает, какая анимация должна использоваться при смене состояний.
Родительские теги
Родительские теги отсутствуют.
Дочерние теги
state
: Определяет одно из состояний элемента view
.
Пример
view(name="content" animation="fade")
state(on="/about/")
h1 About
state(on="/contacts/")
h1 Contacts
state
state определяет одно из состояний элемента view.
Атрибуты
name
: Определяет имя элемента.animation
: Указывает, какая анимация должна использоваться при появлении элемента.on
: Определяет внутренний URL, при переходе по которому данное состояние будет активировано.default
: Атрибут-флаг, указывающий, что данное состояние должно отображаться изначально. Если в одном элементе view
имеется несколько состояний с атрибутом default
, активен будет последний из них.
Родительские теги
view
: Определяет блок, имеющий несколько состояний.
Дочерние теги
Дочерние теги отсутствуют.
Пример
view(name="content" animation="fade")
state(on="/about/")
h1 About
state(on="/contacts/")
h1 Contacts
modal
Определяет модальное окно.
- При открытии модального окна старый URL-адрес сохраняется и при пользовательском закрытии окна восстанавливается.
Атрибуты
name
: Определяет имя элемента.on
: Определяет внутренний URL, при переходе по которому данное модальное окно будет отображено.active
: Атрибут-флаг, указывающий, что данное окно должно быть отображено изначально.animation
: Указывает, какая анимация должна использоваться при окрытии окна.
Родительские теги
Родительские теги отсутствуют.
Дочерние теги
Дочерние теги отсутствуют.
Пример
modal(on="/login/" animation="fade")
h1 Log in
Общие атрибуты
template
: адрес узла, возвращающего текстовый шаблон, который будет загружен в качестве содержимого целевого элемента. Если у элемента также присутствует атрибут on
, шаблон будет загружен только при активации элемента.context
: Используется только в паре с атрибутом template
. Определяет адрес узла, возвращающего JSON-объект, используемый затем в качестве контекста при рендеринге шаблона, указанного в template
. В качестве объекта запроса узла отправляется объект, содержащий все атрибуты текущего элемента с префиксами attr-
, а также данные внутреннего URL, если загрузка шаблона происходит по атрибуту on
.styles
: Определяет адрес узла, возвращающего css-код, который будет применен только для текущего элемента.request
: Определяет адрес узла, на который будет отправлен запрос при возникновении события действия на данном элементе (например, отправка формы для элемента form
или нажатие на кнопку или ссылку на элементах button
и a
). В качестве объекта запроса передаются все атрибуты элемента с префиксами attr-
, а также данные элемента, например, поля формы.success
: Определяет внутренний URL, на который будет осуществлен переход в случае успешного запроса. Работает только в паре с request
.fail
: Определяет внутренний URL, на который будет осуществлен переход в случае неуспешного запроса. Работает только в паре с request
.
Наследование классов
Если один из классов дочернего элемента начинается с символа -
, то в начало данного класса добавляется наименование первого класса родительского элемента.
Таким образом, следующий код:
.user
.-name Username
.-email E-mail
Преобразуется в:
.user
.user-name Username
.user-email E-mail
API
Для взаимодействия с сервером используется API - javascript-модуль, предоставляющий все операции для отправки запросов на сервер.
Запрос API:
script(src="/api/api.js")
В результате должен быть загружен модуль со следующими методами:
getTemplate(filename, [request, ][node], callback)
: Аргументы:
filename
: Имя файла шаблона.request
: Содержит все атрибуты целевого элемента с префиксами attr-
, а также данные внутреннего URL.node
: Путь узла контекста на сервере.callback
: Функция обратного вызова. Принимает объект ответа со свойствами success
и content
.
request(node, request, callback)
: Аргументы:
node
: Путь к узлу на сервере.request
: Объект, содержащий все атрибуты элемента с префиксами attr-
, а также данные формы.callback
: Функция обратного вызова. Принимает объект ответа со свойством success
.