Вы веб-разработчик?
В чем собственно проблема?
Все веб-фреймворки можно разделить на группы. У каждой из этих групп есть свои достоинства и недостатки.
Сервер-ориентированные
Например: RoR, Django, Asp Net, Express.js
Генерируют html на сервере.
Такой подход хорош для статических страничек.
Но как только вы хотите сделать что-то интерактивное, то начинаете утопать в jQuery-коде.
Клиент-ориентированные
Например: Backbone.js, Knockout.js, Ember.js, Batman.js
Генерируют html прямо на клиенте из темплейтов. Код на клиенте структурирован.
Хорошо для интерактивных сайтов.
Не отменяет необходимость использовать сервер-ориентированный фреймворк, что ведет к дублированию кода (модели, валидация и т.д.)
Кросс-компилируемые
Например: GWT, Cappuccino
Позволяют писать всё на одном языке.
Очень большой уровень абстракции.
Шаг вправо, шаг влево — расстрел.
Так же ни один из фреймворков не имеет механизмов синхронизации данных между клиентом и сервером и оставляет реализацию этого на нашу совесть.
Давайте помечтаем
Что мы хотим от веб-фреймворка?
- Один язык (Javascript) для повторного использования кода на сервере и клиенте
- Генерация html первый раз на сервере (для быстрой загрузки), следующие разы на клиенте (для интерактивности)
- MVC для структуры кода
- Реактивная привязка вида и модели (изменения модели немедленно отражаются в html и наоборот)
- Встроенная синхронизация данных между сервером и всеми клиентами
- Offline
Такое бывает?
Да, Derby.js
github
twitter
Вопросы лучше всего задавать в Google Groups
Пример приложения: habitrpg
Создатели Derby.js: Nate и Brian
P.s.:
Основной конкурент — Meteor.
Из плюсов — ниже порог входа. Из минусов — не поддерживает npm и нет генерации html на сервере.
Подробное сравнение здесь.
Автор: vmakhaev