yandex-ui/noscript — pull request #264 by chestozo (2014-05-03 18:00:21+00:00)
Title: Рендеринг приложения в nodejs

Изменения API:
- `ns.tmpl` теперь возвращает строку. До сих пор он возвращал DOM ноду, но у нас нет DOM-а на сервере (он нам и не нужен)
- `ns.update` теперь поддерживает `options.syncOnly` (выполнить update только для синхронных видов) и `options.renderOnly` (результатом update-а должна стать HTML строка)

Особенности работы:
- лейаут, модели, виды и роуты надо выносить в отдельный файл / файлы, чтобы инклюдить их на клиенте и на сервере. К примеру, https://github.com/chestozo/noscript-demo/blob/master/server.js#L15-L18
- на стороне приложения надо переопределить `ns.tmpl` и `ns.http`, к примеру, так https://github.com/chestozo/noscript-demo/blob/master/server.js#L20-L49

Пример:
допилил своё демо приложение https://github.com/chestozo/noscript-demo/
```sh
git clone git@github.com:chestozo/noscript-demo.git
cd noscript-demo
npm install
node server-data.js &
node server.js
# -> http://localhost:2014/
# Тут будет отдаваться html, сгенерённый на сервере.
# При этом одна из моделей грузится по http на стороне nodejs.
```

А ещё я хочу сказать вот что:
- DOM не потребовался, потому что доработал `ns.update`
- вообще основная работа по прикручиванию ложится на плечи разработчиков приложения, в noscript почти ничего упростить нельзя
- нужно внимательно писать yate external функции. Там нельзя использовать глобальные объекты, которые есть в браузере (`window`, `document`, `location`). И вообще все глобальные объекты должны быть доступны в nodejs и их нужно передавать в yate, как тут https://github.com/chestozo/noscript-demo/blob/master/server.js#L24
- чтобы это заработало, нужно, чтобы @pasaran замёржил https://github.com/pasaran/yate/pull/226