Derby.js — новый взгляд на веб-разработку

в 11:08, , рубрики: javascript, node.js, Веб-разработка, метки: ,

Derby.js — новый взгляд на веб разработкуВы веб-разработчик?

В чем собственно проблема?

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

Сервер-ориентированные

Например: 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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js