LINUX.ORG.RU

Смысл в Node.js

 , ,


0

4

Посоны, какой смысл использовать ноду в бекэнде? Я ещё как-то понимаю смысл ноды в связке с electron или NW, но в остальном это извращение... ИМХО. Какой профит от ноды в сравнении с golang например.

P.S. Просто сейчас молодежь помещена на Node.js, просто может я уже пробзделый программер?

★★★

В чем смысл ноды в связке с electron или nw? я понимаю еще на бэкенде, но в остальном это извращение...

l0stparadise ★★★★★
()
Ответ на: комментарий от AUX

Там event loop классный, можно пилить всякое нагруженное по IO не включая головы, можно рендерить изоморфное и отдавать не голый <body> в свой SPA. Обычно я встречал кейсы, что node.js отдают прошаренным фронтэндерам и они на ней пишут удобные для себя API, а нода уже ходит в сервисы с нормально задизайненным API. Ну и судя по вакансиям, это новый PHP. Ну и да, вроде как с тулзами все намного кучерявее чем в Go.

Deleted
()

Смысл в том, чтобы фронтэндеры могли и в бэкэнд тоже. А профита никакого. Кстати, не замечал чтобы кто-то был помешан на ноде.

newb
()
Ответ на: комментарий от AUX

Не хайпа ради, вчера потрогал палкой электрон, вот и спрашиваю.

Чтобы вчерашние фронтендеры могли писать бэкенд.

Благодаря тому, что ввод-вывод неблокирующий - то один поток может реально много раскидать, а из за того, что V8 оптимизирует все похлеще, чем CLR - можно получить вполне себе приемлемую производительность.

Но, с другой стороны, язык - кривое поделие разработанное для того, чтобы по клику на кнопочку показывать спрятанный div, попал на бэкенд. ГоЛанг лучше, но у него порог входа выше. Сравнение с PHP неоднозначно, но качество самих языков где-то рядом.

nihirash ★★★
()
Ответ на: комментарий от Deleted

Просто с виду все прибито гвоздями с боку, нет ощущения целостности.

AUX ★★★
() автор топика
Ответ на: комментарий от newb

Новый тренд же! Мульён статей в интернетах, о крутости ноды.

AUX ★★★
() автор топика

закастуйте balancer`а. лень искать, но у него где то было сравнение веб фреймворков и там нода круто делает всех по кол-ву запросов

wackobird
()
Ответ на: комментарий от Deleted

event loop

Зеленые потоки не? В гоу как-то все логически проще и изящно.

AUX ★★★
() автор топика
Ответ на: комментарий от Vit

Просто непонятно, зачем при всем ужасе яваскрипта, прикручивать к нему сбоку ведро с болтами.

AUX ★★★
() автор топика

0. Чтобы зареюзать какой-нибудь код (например, валидацию) на фронте и бэке. golang для таких фишек нужно будет в js компилировать.

1. Пре-рендеринг/изоморфичный рендеринг SPA

x3al ★★★★★
()
Ответ на: комментарий от AUX

Там давно нет ужасов, а стремные штуки запрещаются на уровне линтера. Дело вкуса.

Рассказы про ужасы какбэ отражают эпоху знакомства с яваскриптом :)

Vit ★★★★★
()
Ответ на: комментарий от x3al

Мда... Чувствую качество кода будит на «высоте».

AUX ★★★
() автор топика

смысл тот же, что и пых юзать - очень простое взаимодействие с фронтом. ну и фронт-кодер может тоже писать куски бэка, тогда его гордо обзывают full-stack (зп та же остается разумеется). плюс сквозная обработка json.

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

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

проблема в том что это блин функциональный язык, и все попытки сделать из него объектно-ориентированный типа прототипов это пиндец. людей походу даже не смущает что они для создания объекта юзают слово function.

upcFrost ★★★★★
()
Ответ на: комментарий от AUX

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

Но ведь никто не заставляет делать плохо :)

Vit ★★★★★
()
Ответ на: комментарий от upcFrost

людей походу даже не смущает что они для создания объекта юзают слово function.

Ну, если людей не смущает то, что они не отвлекаясь на задачу заказчика самозабвенно пишут классы, иерархии наследования, миксины - почему их должно смущать вполне традиционное в программировании слово function?

Насчёт ноды - событийное программирование и на Perl'е очень развито, но нельзя сказать, что это лекарство от низкой производительности... Лекарство от низкой производительности - либо горькое и гадкое (С++), либо простое и приятное: вменяемый язык программирования, GUI, клиент-серверы и отказ от ***ых браузеров и ушат помоев в виде CSS, HTML и убогого протокола HTTP.

DRVTiny ★★★★★
()
Последнее исправление: DRVTiny (всего исправлений: 1)
Ответ на: комментарий от DRVTiny

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

тогда их еще и не должно смущать что на выходе получается корявая хрень, которую ни расширить, ни починить возможным не представляется. классы и основную иерархию вообще можно (можно != нужно) автоматом сгенерить из класс-диаграммы какого-нибудь UML-редактора.

и кстати. иерархия строится как раз исходя из задачи заказчика.

почему их должно смущать вполне традиционное в программировании слово function

потому что JS очень жестко заточен под функции. попытка впилить стандартное ООП на языке, построенном вокруг коллбэков и параллельности - это как пытаться себе язык ложкой отрезать

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 3)
Ответ на: комментарий от upcFrost

Там таки есть class и async/await (или co + yield). Колбеки понемногу остаются только у слоупоков, и тех кто на яваскрипте не писал но любит похоливарить.

Vit ★★★★★
()

Просто сейчас молодежь помещена на Node.js

ну ты какбэ сам ответил. ворох кодеров за еду и большое сообщество - для разработки самое то. а раз оно хоть както может работать, то почему бы и нет?

genryRar ★★
()
Ответ на: комментарий от upcFrost

попытка впилить стандартное ООП

А зачем его туда впиливать? Только потому что это было модно в ту светлую пору, когда нынешний планктон учился кодить?

DRVTiny ★★★★★
()
Ответ на: комментарий от upcFrost

и кстати. иерархия строится как раз исходя из задачи заказчика.

Заказчику нужен бизнес-результат, ему всё равно, на чём вы пишете, хоть на ассемблере или brainfuck'е - главное, чтобы поддерживалось нормально.

А конечный результат - это просто некая бизнес-логика. Никогда никому выдуманные «объекты» типа «небоскрёба» с методом «разрушиться» не нужны. Есть гигантский пласт приложений, написанных без ООП - и всё там прекрасно саппортится и расширяется. Не тешьте себя иллюзиями: за больные ООП-фантазии никто не готов платить. Платят за готовое приложение, делающее «всё как надо/правильные вещи» и, возможно, за услуги по его поддержке.

DRVTiny ★★★★★
()
Ответ на: комментарий от upcFrost

тогда их еще и не должно смущать что на выходе получается корявая хрень, которую ни расширить, ни починить возможным не представляется.

подписываюсь под словами выше, добавлю только от себя:
мы продавали софт, написанный полностью на ООП, значит парадигме (C#), вот только криворукими даунами написанный. там и UML, и диаграммы, и всё, о чём ты только мечтаешь.
внедрение одного чекбокса занимало месяц, а показывать нужно было вчера.
бегать с криками oop flexibility надо было 20 лет назад. сейчас только школьник может поверить, что парадигма делает твой код лучше.

system-root ★★★★★
()

То же могу про голанг сказать.

rumgot ★★★★★
()

По поводу nodejs могу сказать еще, что удобно ведь, когда один язык, а не так, что на каждый компонент свой.

rumgot ★★★★★
()

Node.js была создана в 2009 году. Вроде особый хайп уже прошёл. Ты где был все эти года? Столько холиваров пролито было. Даже я тему создавал.

И что? Теперь сам на node.js :)

P.S.: А делать веб на Go, то ещё извращение. Он больше для всяких консольных утилит, рулить контейнерами и т.д.

P.S.2: Если не Node.js, то тогда уж лучше Rust.

P.S.3: А вообще, я смотрю на связку Node.js + Rust. Узкие места можно разбавить Rust. WASM опять же, но это уже на фронте.

th3m3 ★★★★★
()
Ответ на: комментарий от th3m3

И что? Теперь сам на node.js :)

Нет, потыкать взял

А делать веб на Go, то ещё извращение.

По мне очень удобно и быстро

Если не Node.js, то тогда уж лучше Rust.

Ты это серьезно?

AUX ★★★
() автор топика
Ответ на: комментарий от AUX

По мне очень удобно и быстро

Вот есть цитатка:

Я не представляю, как народ пишет бизнес-логику на Go, но как-то пишут же! Короче, тут все довольно сложно. С одной стороны, делать CRUD в Go это достаточно болезненно, с другой стороны есть 350 разных роутеров и фреймворков, которые здорово облегчают работу.

И тут тема раскрывается полностью: https://habrahabr.ru/post/274099/

Т.е. пилить веб на Go можно, но зачем? Когда есть другие инструменты.

Ты это серьезно?

Конечно. Rust лучше Go ;)

th3m3 ★★★★★
()
Последнее исправление: th3m3 (всего исправлений: 1)
Ответ на: комментарий от AUX

Яваскрипт, между прочем, покруче и погибче go, поищи примеры анонимуса тут, как он вкручивал на яваскрипте всякие монады на раз два три, такое на гоу запилить нереально, не гибкий он, нихрена - у него всё тупо: либо структуры, либо примитивы.

menangen ★★★★★
()
Ответ на: комментарий от nihirash

Благодаря тому, что ввод-вывод неблокирующий - то один поток может реально много раскидать

А потом выясняется, что широкий круг задач, включая SQL хранилища, совершенно синхронны, а с асинхронной частью справляется nginx.
Тогда хипстеры внедряют noSQL, а потом у них спрашивают - «а где дешёвые реляциии?????» и всё...

Shadow ★★★★★
()
Ответ на: комментарий от menangen

fxd

Яваскрипт, между прочем, покруче и погибче go, поищи примеры анонимуса тут, как он вкручивал на яваскрипте всякие костыли на раз два три, такое на гоу запилить нереально, не быдлокодероугодный он, нихрена - у него всё тупо: либо структуры, либо примитивы.

awesomebuntu
()
Ответ на: fxd от awesomebuntu

Пиво этому господину!

AUX ★★★
() автор топика

Так толсто, что даже тонко

Добрый день!

Golang по личным ощущениям проигрывает «Ноде» по скорости, если надо отдавать те же джейсоны. Сам имею практику работы с Golang, NodeJS, Pythion, Erlang. Остановился в итоге на ноде. Хайп с ним связан с многими вещами: неплохая экосистема, множество библиотек, неплохая работа с асинхронностью, высокая скорость работы в определенных задачах, большое сообщество, множество библиотек, веб-ассемблер (теперь стал поддерживаться)... Сам язык, ES6 - очень не плохой. По крайней мере лучше Golang или Python3. Плюс возможность писать через транспилеры на чем угодно почти. Как допник - очень удобная работа с NoSQL базами данных (пришедший с MongoDB объект - просто объект языка, которым можно никак не обрабатывать, а просто использовать).

С Electron есть практика работы. Пета пишу на нем (и на PhaserJS), писал на нем клиент для WebRTC видеочата для Ынтырпрайза - сделал на базе Electron/MaterializeCSS/BackboneJS. Очень понравилось, реализация была готова буквально за пару дней.

Опять же плюс для ынтырпрайза - фрондетнеди, бекендеры, мобильщики и декстопщики являются взаимозаменяемыми. Ну и приложения реально кросс-платформеные. Хром есть везде сейчас.

DevOps для ноды очень простой. Нашим девопсерам нравится. Хотя ранее проекты все у компании были на Java и Python2.x/3.x.

Для чего нода не подходит? Системщина. Хотя может с веб-ассемблером и это поменяется. Но есть один жирный минус - ES6 позволяет стрелять в ногу в самых извращенных формах и требует знания языка и паттернов.

silver-bullet-bfg ★★
()
Ответ на: комментарий от awesomebuntu

Вы имеете опыт работы с форматом JSON на Golang? Я - да. И на Golang это ужас. По скорости примерно равно Python3.x (не Pypy) в итоге. Golang прекрасен для сетевого программирования - в этом он прекрасен, да. Если забыть, что есть Rust и Pure C.

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

Вы имеете опыт работы с форматом JSON на Golang?

И я да, ничего сложного там нет.

По скорости примерно равно Python3.x

Пруфы в студию, вместе с исходниками.

awesomebuntu
()
Ответ на: комментарий от silver-bullet-bfg

Это не показатель.

Категорически отрицаю, ещё какой показатель.
Куча быдлокодеров кодят быдломодули -> куча костылей в инфраструктуре языка -> всё плохо.

awesomebuntu
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.