Мысли об использовании express.js вместо Ruby на Sinatra?

Я работаю над социальным приложением и рассматриваю использование express.js/nodejs вместо моего первоначального выбора, Sinatra/Ruby.

В основном я беспокоюсь о # проектах с открытым исходным кодом, доступных в Ruby, чтобы быстро справиться с этим. Вторая главная проблема - стабильность/зрелость и полнота выражения.

Любая обратная связь, комментарии приветствуются.

Ответы

Ответ 1

Надеюсь, этот ответ поможет вам. Я попытался сделать что-то подобное в эти выходные. Будучи давним сторонником Rails (и после того, как я стал очень хорош в Rails 3.2.1, я решил перепрыгнуть корабль в эти выходные и переключиться на Nodejs. Будучи средним кодовым кодом JavaScript, я думал, что это будет весело и сложно.

Я даже купил Nodejs screencast из Peepcode. Итак, я сажусь, запускаю Textmate, получаю простой проект nodejs, а затем настраиваю его с помощью Twitter Bootcamp, и приложение начинает выглядеть потрясающе, ИМХО.

Затем я получаю поддержку базы данных. Затем БАМ. Вещи быстро ударили меня. Я должен найти неблокирующий драйвер Postgresql. Хорошо. Найден один. Какие? Мне нужно вручную создавать SQL-запросы? Но я настолько испорчен ActiveRecord? ОК, похоже, существуют рамки типа AR для node. Но учебник, который я использовал, был для Express. Но подождите, Нодеджицу рекомендовал Утюг. Хорошо, Flatiron выглядит многообещающим. Но подождите, я начинаю смотреть на пример использования Flatiron для управления данными. Они называют это "изобретательным"? Я нашел один пример управления данными о том, что волк ест белку? Где примеры has and belongs to many? Как сказать Flatiron, что моя модель Notes является полиморфной и относится к Trips и Expenses?

Я уверен, что они там, но я не мог найти его.

Но все становится лучше. Стрелять. Я думал, что ненавижу миграцию, пока мне не пришлось запускать pgAdmin и/или Navicat, чтобы вручную создавать мои базы данных. Затем мне пришлось вручную создавать таблицы... о, дерьмо. Я испортил столбец в pgAdmin. Но это не позволило мне изменить его! Поэтому мне пришлось перезапустить все создание таблицы снова. Тьфу. Человек, я не вижу генераторов и rake db:migrate на этом этапе!

Затем я понял, что провел весь уик-энд (ну, какое небольшое время у меня есть для кодирования), и все, что я должен показать, это потрясающая статическая HTML-страница, которая не работает.

Точка, если вы хороши в Rails, тогда Nodejs будет основным сдвигом. Может, тебе это нравится? Возможно, нет.

В конце выходных я понял кое-что. Мое новое приложение будет сильно нагружено пользовательским интерфейсом и будет отправлять JSON обратно на сервер бэкэнд. Rails - отличный инструмент для этого. Rails совершенно счастлив говорить JSON. На самом деле, мое приложение будет статическим HTML-страницами, обслуживаемыми через nginx, а Rails будет управлять уровнем данных с помощью контроллеров.

Мое предложение - изучать Express/Nodejs, если вы хотите начать с нуля каждую часть процесса разработки. Если вы хотите создать свои собственные строки запросов. Если вы хотите сделать все вручную. Может, тебе это нравится. Может быть, у вас есть идеи по облегчению мира. Возможно, вы хотите использовать Tower.js или Flatiron.js или какую-либо другую инфраструктуру Nodejs.

Или, может быть, вы похожи на меня, и у вас есть чертвое приложение, которое вы хотите закончить. Затем используйте Rails.

Ответ 2

Есть несколько (похожих) вопросов по этой теме:

В основном меня беспокоит количество проектов с открытым исходным кодом, доступных в Ruby, чтобы быстро справиться с задачей.

Это связано с тем, что Ruby намного старше node.js. Я думаю, что более важно, чем # библиотек, сколько из них построено с неблокирующим стилем. Если вы сравниваете Ruby и node.js, то большинство модулей в последнем строятся из этого стиля, поскольку это характер node.js.

Вторая серьезная проблема - стабильность/зрелость и полнота express.js.

Несмотря на то, что экспресс является релятивистским молодым по сравнению с RoR или Sinatra, уже существует несколько приложений, которые были успешно построены поверх выражения.