Разъяснения о Rails и Node.js - PullRequest
17 голосов
/ 06 марта 2012

До сих пор я всегда использовал PHP с или без фреймворка, но месяц назад я решил начать что-то новое: Ruby и Rails, я нашел их довольно простыми и похожими на PHP и некоторые PHP-фреймворки в том, как они работают, но использование более простого синтаксиса и множество других преимуществ.

Несколько дней назад я начал читать о Node.js, Node.js против Rails, "почему node.js лучше" ...

Я немного запутался, но моя цель - научиться чему-то современному, что не устареет через несколько месяцев, поэтому:

Каковы основные различия между Rails / Ruby и Node.js и каркасом на его основе, таким как Express.js (за исключением того, что один написан на JS, а другой на Ruby)?

Каковы основные преимущества / недостатки использования Node.js и платформы на его основе вместо решения на основе Ruby, такого как Rails?

Спасибо!

Ответы [ 5 ]

35 голосов
/ 11 марта 2012

Нет достаточных различий между Node.js и Rails, чтобы он практически имел значение.

Многое из того, что может сделать Node.js, может быть выполнено в Rails с вещамикак EventMachine и Pusher.Так что, если вы не действительно знакомы с ограничениями Rails и не знаете, что будете раздвигать границы, вам будет сложно сделать что-то, что опытный разработчик Rails не сможет сделать.

Создав приложения в Node и Express, я могу сказать, что одних их недостаточно, чтобы сделать сексуальное приложение.Они могут казаться такими же старыми и устаревшими, если у вас нет выдающегося пользовательского интерфейса для облегчения возможностей бэкэнда.Вместо того, чтобы сравнивать бэкэнд-серверы, я думаю, что реальное будущее создания удивительных вещей - в интерфейсных JavaScript-фреймворках, таких как Backbone.js , которые используют Express / Rails / Node.js в бэкэнде.

Я решил пойти в направлении Backbone.js с Rails в качестве моего внутреннего сервера API.Потому что очень легко быстро создать очень хороший бэкэнд-сервер RESTful в Rails.Rails также упрощает работу с CoffeeScript и предварительную компиляцию / организацию кода Backbone.Для Rails уже есть достойные гемы Backbone.js.

Ядро Rails также может признать и принять тот факт, что внешний вид JC MVC логически является хорошим следующим шагом, и они работают над усилениемсвязь между двумя.По тем же причинам они также работали над тем, чтобы сделать Rails еще лучшим API-сервером, чтобы он мог легче работать с внешним интерфейсом JS.Node.js и Express не прикладывают столько усилий для координации с MVC JavaScript-интерфейса, как сообщество Rails.

Хорошая работа с MVC-интерфейсом JavaScript и Rails в качестве бэкэнда делает вас отличным выбором для обоих миров.условия получения работы.Вы легко сможете запрыгнуть в проект Node.js и повысить ценность этой команды благодаря своему превосходному опыту работы с веб-интерфейсом, а также сможете использовать удары в команде Ruby on Rails и повысить их ценность.

5 голосов
/ 09 марта 2012

Как объясняет официальный веб-сайт Node.js :

Node.js - это платформа, основанная на среде выполнения Chrome JavaScript для простого создания быстрых, масштабируемых сетевых приложений.Node.js использует управляемую событиями неблокирующую модель ввода-вывода, которая делает ее легкой и эффективной, идеально подходящей для приложений с интенсивным использованием данных в реальном времени, работающих на распределенных устройствах.

С другой стороныhand Официальный сайт Ruby on Rails говорит:

Ruby on Rails - это веб-инфраструктура с открытым исходным кодом, оптимизированная для счастья программистов и обеспечения устойчивой производительности.Это позволяет вам писать красивый код, предпочитая соглашения по конфигурации.

Учитывая это, я думаю, что более уместно сравнивать Ruby и Node.js, но даже это не совсем правильно, учитывая, что Ruby программируетязык и Node.js это НЕ.Вы, вероятно, могли бы сравнить JavaScript с Ruby, но я думаю, что это не то, что вы хотели задать с этим вопросом:)

Итак, для меня ключевой момент в понимании того, чего на самом деле пытается достичь Node.js, хорошо описан на Node.js о странице .Ключевая идея Node.js (для меня) описана в следующих предложениях:

Узел схож по дизайну и подвержен влиянию таких систем, как Ruby's Event Machine или Python's Twisted.Node продвигает модель событий немного дальше - он представляет цикл событий в виде языковой конструкции, а не в виде библиотеки.В других системах всегда есть блокирующий вызов для запуска цикла обработки событий.Обычно каждый определяет поведение с помощью обратных вызовов в начале скрипта, а в конце запускает сервер с помощью блокирующего вызова, такого как EventMachine :: run ().В Node такого вызова start-the-event-loop нет.Узел просто входит в цикл обработки событий после выполнения сценария ввода.Узел выходит из цикла обработки событий, когда больше нет обратных вызовов для выполнения.Такое поведение похоже на браузерный javascript - цикл событий скрыт от пользователя.

То, что это должно позволить вам, заключается в том, что вы должны иметь возможность легко писать программы с высокой степенью одновременности, даже не думая о параллелизме с использованием JavaScriptСинтаксис и функции обратного вызова как базовые параллельные выполняемые блоки.

4 голосов
/ 09 марта 2012

Ваш страх, что Rails или Node.js исчезнут через неделю, необоснован.У Rails есть большое сообщество, и он будет существовать очень долго, хотя в настоящее время (в начале 2012 года) ему уже не хватает ненависти.Node.js только начинается и так много внимания, что я не думаю, что когда-нибудь возникнут проблемы с переходом на уровень Rails.

Тем не менее, я оценил Node.js и Rails как опциидля проекта и причин, по которым я выбираю Node.js вместо Rails:

  1. "Путь Rails" - в моем (по общему признанию ограниченном) опыте с Rails действительно кажется, что вы либо делаете этопуть Rails, или вы будете в мире боли.Большая часть пути Rails заключается в использовании модели ActiveRecord.Преимущество этого состоит в том, что есть много гемов, которые с радостью работают с вашим кодом, потому что они знают, что вы будете использовать ActiveRecord.Недостатком является то, что вы смешиваете свой доступ к данным и модель.Я не являюсь поклонником этой идеи, поэтому путь Rails для меня все еще кажется немного ... off.

  2. JavaScript - это ключевая часть веб-разработки на стороне клиента и идея его использованияна клиенте и сервере интересно.Я не очень силен в JavaScript, и я не могу представить себе лучший способ стать лучше, чем использовать его повсюду.

  3. Мой проект нуждается в коммуникации в режиме реального времени, в то время как яЯ уверен, что это можно сделать в Rails, и, похоже, есть немало положительных отзывов о способности Nodes справиться с этим с помощью socket.io, который является опцией лидера.

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

В любом случае .. Удачи!

3 голосов
/ 24 января 2014

2 вещи - производительность и производительность.

Производительность (подробнее здесь )

http://jslang.info/blog/2014/ruby-on-rails-vs-nodejs/ror-vs-node.png

Производительность (как быстро вы можете создать это приложение)

Ruby on Rails - это специализированный и высокопроизводительный инструмент для создания так называемых приложений Web 1.0 и Web 2.0 (99% интернет-сайтов являются такими приложениями). По моему субъективному мнению и опыту в этой области Rails примерно в в 2-4 раза продуктивнее , чем node.js или express.js.

Для приложений Web 3.0 (в режиме реального времени, на стороне клиента MVC и т. Д.) Это не так, RoR не оставляет там своего преимущества.

Итак, выбор зависит от варианта использования и приоритетов .

2 голосов
/ 06 марта 2012

Я знаю о Node.js намного больше, чем о Ruby.При этом Ruby получил гораздо большее распространение.В настоящее время это очень горячий навык, чтобы иметь на рабочем месте.Некоторые могут поспорить со мной об этом, но я думаю, что Node.js все еще находится в стадии разработки и будет еще немного дольше.Он многообещающий, но пока еще не принят многими компаниями и проектами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...