Комментарии 33
Зачем переводить такой бред, похоже автор опуса не подозревает что под капотом рельс находится язык ruby.
RoR же является набором библиотек, так что все ссылки на то, что в ноде нужно что-то доставлять — вызывает улыбку.
Ну и у ноды киллер фича — асинхронность. Так что учить нужно обязательно, без разницы какой язык и фреймворк у вас основные. Это довольно разные молотки.
RoR же является набором библиотек, так что все ссылки на то, что в ноде нужно что-то доставлять — вызывает улыбку.
Ну и у ноды киллер фича — асинхронность. Так что учить нужно обязательно, без разницы какой язык и фреймворк у вас основные. Это довольно разные молотки.
Ну и у ноды киллер фича — асинхронность. Так что учить нужно обязательно, без разницы какой язык и фреймворк у вас основные.
В ноде это все-таки через колбэки, что не очень приятно. В этом плане гораздо приятнее смотрится реализация на Tornado/Python
Есть библиотеки вроде asynс, которые позволяют писать нормальный код даже без кофескриптов. Читается лучше, чем магии рельс.
При чём это так удачно, что подобное апи я сейчас реализую подобным образом и для php библиотек.
p.s. пишу на обоих сабжах, но они они дополнительные и знание не глубокие, но проблем не испытываю ни с тем, ни с другим.
При чём это так удачно, что подобное апи я сейчас реализую подобным образом и для php библиотек.
p.s. пишу на обоих сабжах, но они они дополнительные и знание не глубокие, но проблем не испытываю ни с тем, ни с другим.
не холивара ради (сам использую async), но Вам не кажется, что использовать стороннюю библиотеку для возможности писать нормальный код — это как-то не очень?
В node.js это нормальная практика. Так получилось, что стандартная библиотека не очень богатая. Всякие request и lodash сильно упрощают жизнь.
Я думаю это было неизбежно и кто-нибудь все-равно написал бы обертку под это дело.
Чёрт его знает, но в каком языке это не так. В мире ruby — rails, node.js — expressjs, javascript — jquery, C# — .net, java — spring, php — laravel…
Я воспринимаю это нормально, мир не идеален.
Я воспринимаю это нормально, мир не идеален.
В EcmaScript 6 появились generators, с которыми станет приятно. developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators
В этом плане гораздо приятнее смотрится реализация на Tornado/Python
Кроме этого, в Python ещё есть gevent и свежий asyncio. Ассортимент.
ну а кто запрещает использовать EventMachine и получить асинхронность и reactor-паттерн на руби?
Node.js написан полностью на Javascript, тогда как Rails написан на Ruby.
Сравнение теплого и мягкого.
joyent/node на плюсах основная часть, причем)
Правда?
Статистика выглядит так, потому что в свое время из репозитория вынесли несколько элементов в отдельные зависимости. В первую очередь, это Libuv и HTTP Parser.
Вообще странно Гитхаб считает статистику по языкам в проекте. Вот что выдал мне Cloc:
Интересно, что если выкинуть зависимости и папку /tools, то статистика будет совсем другой: чисто в самом ноде намного больше JS:
А если сиключить тесты, то получим:
Получается, что 2/3 JS-кода в Node.js — это тесты.
-------------------------------------------------------------------------------- Language files blank comment code -------------------------------------------------------------------------------- C++ 454 79233 58793 663096 C 1267 52937 84691 354145 Javascript 3887 53394 106568 278543 C/C++ Header 805 44693 55454 185470 Assembly 131 12115 2284 155225 Perl 173 8884 8237 70352 Python 174 10047 17745 40322 make 98 2140 854 15797 HTML 130 3386 58 12647 Lua 25 1040 1355 9264 Bourne Shell 108 1247 1383 5932 DOS Batch 42 510 143 1807 m4 2 515 0 1640 CSS 10 163 89 1523 D 4 102 316 712 PHP 5 133 473 698 Lisp 5 56 107 489 Bourne Again Shell 6 12 6 85 Ruby 1 15 4 76 YAML 9 9 0 46 XML 4 2 0 20 awk 1 1 2 10 -------------------------------------------------------------------------------- SUM: 7341 270634 338562 1797899 --------------------------------------------------------------------------------
Интересно, что если выкинуть зависимости и папку /tools, то статистика будет совсем другой: чисто в самом ноде намного больше JS:
-------------------------------------------------------------------------------- Language files blank comment code -------------------------------------------------------------------------------- Javascript 1013 15056 25471 60398 C++ 42 4995 1759 17025 C/C++ Header 46 1197 1412 8153
А если сиключить тесты, то получим:
-------------------------------------------------------------------------------- Language files blank comment code -------------------------------------------------------------------------------- Javascript 104 4940 4100 19838 C++ 37 4885 1738 16678 C/C++ Header 46 1197 1412 8153
Получается, что 2/3 JS-кода в Node.js — это тесты.
Это точно. Не судите строго, это всего лишь перевод.
JS — особенный язык в плане своей идеологии. Но и Ruby довольно особенный. Имхо, в плане лояльности к разработчику Ruby выше всяких похвал.
JS — особенный язык в плане своей идеологии. Но и Ruby довольно особенный. Имхо, в плане лояльности к разработчику Ruby выше всяких похвал.
Да суть не в том даже. Просто node.js и rails это вобще разные вещи. С таким же успехлм можно сравнить PHP с JQuery.
Ну знаете, есть такая плоскость сравнения, когда решают, на чем писать новый проект. Говорят «над Java, или на .NET, или на Python, или на Rails, или на Node.js, или еще на чем-то». Да, можно до хрипоты спорить, что Java и Python — языки, .NET и Node.js — среды выполнения, а Ruby on Rails — фреймворк. Все равно в момент, когда обсуждают, на чем писать, все понимают, что именно имеется в виду.
Сравнивают экосистемы в целом: Rails vs Node — это
— Ruby + Rails + Bundler + Rubygems +…
против
— JavaScript + Node.js + npm +…
Сравнивают экосистемы в целом: Rails vs Node — это
— Ruby + Rails + Bundler + Rubygems +…
против
— JavaScript + Node.js + npm +…
Ну я не понимаю как можно сравнить среду и фреймворк. Если уж сравнивать, то хотя бы Express и Rails. Наверное самое близкое что можно сравнить это Sails и Rails. Просто когда сравнивают такие вещи сразу кажется, что у автора недостаток понимания предметной области. (К переводу претензий нет).
тогда как в Rails вам придется иметь дело с SQL, Ruby и Javascript
На счет SQL — сильно спорно. Его приходится использовать только в исключительных случаях. Т.е. очень редко.
Я бы не стал писать большой сайт на node.js. Слишком многое, что уже есть в рельсах придется писать самому. На мой взгляд, даже десятикратный выиграш в производительности не стоит того времени, которое придется потратить на разработку. С другой же стороны, для API node.js в самый раз, хотя тут конкурентом скорее будет Sinatra.
Кстати, о асинхронности. В типичном веб сайтике единственное место, которое, как говорит Ryan Dahl, слишком медленное, чтобы на него ждать — это база данных. Все остальное и так уже в памяти. Может, если вы не будете ходить в базу десятки раз на каждый запрос, потеря производительности будет не такая уж и большая?
Кстати, о асинхронности. В типичном веб сайтике единственное место, которое, как говорит Ryan Dahl, слишком медленное, чтобы на него ждать — это база данных. Все остальное и так уже в памяти. Может, если вы не будете ходить в базу десятки раз на каждый запрос, потеря производительности будет не такая уж и большая?
Прежде всего, Node.js — это веб-сервер с низкоуровневой маршрутизацией и возможностями администрирования, написанный на Javascript с целью асинхронности и высокой скорости.
Почему Node.js — это веб-сервер, почемe C/C++ не веб-сервер, а Node.js веб-сервер. В одном из моих проектов она вообще веб клиент, а ещё в одном она применяется для парсинга бинарных файлов и записи распарсенного в базу. Да на к ней можно подключить модуль веб-сервера, но зачем пытаться загнать реализацию JavaScript в рамки веба?
Вы правы: node.js это не веб сервер, а набор библиотек для JavaScript, хотя чаще всего используется как раз для всяких действий по HTTP; автор node.js, например, немного повёрнут на HTTP, и поэтому нам приходится обрабатывать чанки ответов по мере их поступления вместо более привычного и удобного целого объекта.
Но вы и неправы: это не реализация JavaScript. Реализация называется V8 и пишется совсем другими людьми.
Но вы и неправы: это не реализация JavaScript. Реализация называется V8 и пишется совсем другими людьми.
> Product.find(params[:id])
> доступный повсюду из приложения, модулей, контроллеров и вью в Rails.
Но это же хрестоматийный буллшит!
> доступный повсюду из приложения, модулей, контроллеров и вью в Rails.
Но это же хрестоматийный буллшит!
Нода, нода. Асинхронность. Ужас какой. Все умрем. Traceur пользуйте уже наконец на бэкэнде, динозавры.
app.post('/callback', function (req, res) {
runGenerator(function* (resume) {
var [, [cellReflection]] = yield Cell.getRandomFree(resume),
[, [cell]] = yield Cell.find(cellReflection._id).exec(resume),
user = new User(req.params.user);
yield user.save(resume);
var [, lastBiggestId] = yield Cell.findBiggestId(resume);
cell.user = user;
cell.index = lastBiggestId + 1;
yield cell.save(resume);
res.json(cell);
});
});
Лучше уж тогда сравнивать, например, Meteor и RoR, было бы честнее.
Мне нравятся и рельсы, и метеор, на обоих пишу, если что (-:
Мне нравятся и рельсы, и метеор, на обоих пишу, если что (-:
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Node.js vs Ruby on Rails