Skip to content

Latest commit

 

History

History
48 lines (35 loc) · 6.91 KB

File metadata and controls

48 lines (35 loc) · 6.91 KB

Страница

Noscript служит для создания одностраничных приложений. Поэтому Страница в контексте noscript - это то же самое, что и приложение. В приложении может быть неограниченное количество логических страниц, но все они будут показываться в рамках одного физического html-документа. Он и есть Страница. В noscript страница представлена объектом ns.page.

Адрес страницы

Основное состояние страницы определяется Адресом страницы (url). Он определяет то состояние, которое должно быть показано при загрузке/перезагрузке страницы. Основное состояние может определяться следующими атрибутами:

  • идентификатор логической страницы (раздел сайта)
  • идентификатор сущности, оторбражаемой в приложении (id фотки, id файла)
  • атрибут состояния интерфейса, который хочется иметь возможность задавать извне (идентификатор открытого диалога) Адрес страницы служит её внешним API.

Ключевые сущности

Параметры страницы

Параметры страницы (ns.page.params) - это параметры, получаемые из адреса страницы. ЧПУ преобразуется в объект, с которым в дальнейшем работают сущности приложения.

Маршрутизатор

Для преобразования адреса в параметры используется маршрутизатор (ns.router). Кроме параметров маршрутизатор так же возвращает идентификатор раскладки страницы (ns.layout).

Модель

Модель - это элемент данных. Все данные, которые говорит и показывает интерфейс, должны быть представлены моделями. Модель может быть как клиентским представлением данных на сервере, так и локальным элементом данных, относящихся только к интерфейсу (модели состояний интерфейса).

Для работы с данными сначала декларируются прототипы моделей (ns.Model.define). Затем создаются конкретные экземпляры модели. Уникальным идентификатором экземпляра модели является свойство key. Свойство id у экземпляра модели указывает на прототип модели.

Ключ модели key строится на основе параметров, указанных в декларации модели. К ключам стоит относиться как к хешам. Попытка парсинга ключа - это дорога в ад.

Вид

Вид - это элемент интерфейса, из видов состоит страница. Вид может отображать статическое содержимое, значения параметров страницы, или данные моделей. Вид состоит из декларации и шаблона. Декларация содержит

  • id вида, определяющий прототип
  • модели, от которых зависит вид
  • параметры страницы, от которых зависит вид.

Экземпляры видов идентифицируются атрибутом key. Ключ вида строится на основании параметров моделей, от которых зависит вид, и параметров, указанных в декларации вида.

Экземпляры видов создаются только автоматически в результате работы контроллера обновления (ns.Updater) Виды могут быть вложенны друг в друга. На странице всегда существует корневой вид, внутри которого находятся остальные виды приложения. Существуют специальные виды: бокс, асинхронный вид, вид-коллексия. Шаблон вида может иметь различную структуру в зависимости от используемого шаблонизатора. В комплекте с noscript идёт набор .yate шаблонов, задающих определённую структуру. Так же есть ряд нюансов, которые нужно учитывать при написании собственных шаблонов.

Раскладка страницы

Раскладка страницы (layout) - это декларация, по которой в зависимости от параметров определяется структура видов. Приложение может иметь несколько раскладок. Раскладка выбирается по идентификатору раскладки, который возвращается маршрутизатором. Раскладка представляет собой древовидный json-объект. Каждый узел дерева соответствует виду. В ключе объекта - идентификатор прототипа вида. В значении объекта - вложенные виды. Единственный вложенный вид может быть задан строкой. Более сложная структура может быть задана объектом. Структура, зависящая от каких-то условий может быть задана функцией, которая возвращает одну из перечисленных структур. Чтобы определить вид без вложенностей, значение нужно установить в true.

Контроллер обновления

Контроллер обновления (ns.Updater) - объект, реализующий логику построения и обновления страницы.