node.js JS frontend
Пару дней начал задумываться об использование javascript для серверной разработки. Для этого есть несколько ключевых бонусов, которые решают мои проблемы с которыми я столкнулся на django/tornado. Рано или поздно (если откинуть мелкие) проект разрастается как на бэкенде, но и самое важно на фронтенде.
Например: у нас есть описания модель, для который мы легко можем создать форму с нужной валидацией на стороне сервера, нас это устраивало, но потом мы решили что хорошо бы на стороне клиента перед отправкой тоже делать проверку данных и тут же показывать ошибки/подсказки. Мы это без больших потерь описываем на javascript, но возникает проблема, любые изменения на бэкенде нужно дублировать еще и в javascript. Начинаем думать, прикручивать всякие js библиотеки которые легко позволяют описывать поля и способы валидаций, что опять же костыльно и не решает проблему изменений на сервере. Потом на следующей итераций начинаем смотреть на всякие решения типа dajax для django, которые +/- решает эту проблему, но заставляет менять архитектуру приложения.
И тут врывается v8 который со сносной скоростью позволяет использовать js на серверах. Я тут загорелся желанием посмотреть какие инструменты существуют, ведь нам это в теории позволяет писать код один раз и использовать его и на сервере, и на клиенте. Это то чем любят хвастаться джаваскриптеры. Описал один раз модель, дополнительные свойства для формы, и выполняй прозрачно проверку в двух местах. Но на практике я не нашел ни одного инструмента который реализует это. Есть решения которые позволяют рендеринг страницы переложить на плечи клиента, а если у клиента нет js, или это поисковый паук то тот же шаблон отрендерится на сервер, и отдаст готовый html. Но этим уже не кого не удивишь, такие решения уже есть и для django/rails.
Для меня сейчас node.js как tornado, просто инструмент для построения асинхронного сервер, поверх которого можно накрутить что то. Но все же я перенесу внимание на node.js только потому что в данный момент его популярность на порядок выше, и для него пишут намного больше интересных модулей, и самое главное, на что я надеюсь, все же будут развивать идею одной кодовой базы для сервера/клиента. Да есть уже всякие метеоры, SocketStream, от яху был инструмент которые позволял прозрачно переносить расчеты между сервером и клиентом и т.д, но это всё что то не. Для того же торнадо есть torandio2 (лучше посмотреть в сторону sockjs-tornado) который позволяет очень быстро и легко писать приложения которые нуждаются в постоянном соединение с сервером. Но ни одно не решает проблему взаимодействия с клиентской логикой интерфейса.