При использовании конфигурации по умолчанию вся инициализация сводится к вызову
функции ns.init
и запуску первого апдейта:
$(function() {
ns.init();
ns.page.go();
});
ns.init
включает экшены, обрабатывает предварительно заданный роутинг и ищет
в DOM ноду #app
для использования ее в качестве контейнера для интерфейса.
Вызов ns.page.go
нужен для запуска первого глобального апдейта.
До инициализации можно задать префиксный путь для всех ссылок. Это может
пригодиться, когда ваше приложение находится не по корневому пути
app.example.com
, а, например, app.example.com/checkout
:
ns.router.baseDir = '/checkout';
Noscript позволяет задавать заголовок страницы, зависящий от текущего URL,
при переходах внутри приложения. Переопределите функцию ns.page.title
:
ns.page.title = function(url) {
if ('/settings' == url) {
return 'App - Account Settings'
}
return 'App';
};
Примечание: При необходимости, для получения параметров страницы
из полученного URL можно воспользоваться функцией ns.router
:
ns.page.title = function(url) {
var params = ns.router(url).params;
// ...
};
По умолчанию фреймворк группирует запросы моделей, нужных для отрисовки
интерфейса и запрашивает их по URL /models/
вне зависимости
от ns.router.baseDir
. Переопределите константу ns.request.URL
для задания
собственного пути:
ns.request.URL = '/models/v1/json/';
При необходимости пробросить дополнительные параметры при запросе моделей,
добавьте их в объект ns.request.requestParams
:
ns.request.requestParams.token = getAuthToken();
ns.request.requestParams.version = '0.1.1';
Это приведет к отправке запросов вида:
Request URL: http://example.com/models/?_m=todos
Query String Parameters:
_m: todos
Form Data:
category.0: home
token: 6a5e516725c68c
version: 0.1.1
Определение функции ns.request.canProcessResponse
позволяет динамически
заблокировать обработку ответа моделей, например, при несовпадении авторизации
или рассинхронизации клиента с бекендом:
ns.request.canProcessResponse = function(response) {
// На бекенде выехала новая версия, а текущий клиент засиделся.
if (response.version != APP.version) {
location.reload();
return false;
}
return true;
};
По умолчанию для генерации разметки из шаблонов используется модуль main
,
однако сохраняется возможность его динамического определения в зависимости от
параметров страницы и текущего лейаута:
ns.Update.prototype.render = function(tree, params, layout) {
var module = 'main';
if (params.context === 'setup') {
module = 'setup';
}
return ns.tmpl(tree, null, module);
};
Вроде бы ок.
Мне кажется только, что надо упомянуть:
ns.router
(общие слова) - что надо задать урлы, редиректы и реврайты#app
можно тоже переопределитьns.page.title
вызывается в какой момент? можно ведь там братьns.page.current
и там уже все параметры есть, не надо гонять урл черезns.router
дважды.Вообще, хорошо бы в конце примерный js файл может быть.