NodeJS — стоит ли осваивать в 2018?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Хочу перейти в «высшую лигу» полноценных разработчиков.

Есть ли смысл осваивать NodeJS в 2018?
C прицелом на Backend либо Fullstack JS.

C одной стороны относительно низкий порог входа.
C другой — вроде как пик популярности прошел 1,5 года назад.
Есть ли будущее у этой ниши?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

Есть ли смысл осваивать NodeJS в 2018?

Да.

C одной стороны относительно низкий порог входа.

Очень даже относительно.

C другой — вроде как пик популярности прошел 1,5 года назад.

Возможно, как раз из-за «низкого порога», который оказался весьма относительным.

Есть ли будущее у этой ниши?

Да.

Если есть опыт только в верстке, не советую начинать что-либо делать без изучения основ для серверного программирования, особенностей js, способов и инструментов для тестирования и отладки.

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Не только фронтенд меряется звездочками, ещё гоферы

щас в тренде Python

шо, опять? ©

Асинхронность это главная проблема? Т.е. если человек понимает promise, async/await и что почти все операции в node выполняются асинхронно и как их лучше выполнять — можно сказать что это проблема решена?

Можно, пожалуйста, про Python подробнее. Очень интересный вариант, но по тем источникам что у меня — сложно сказать что он в тренде для веб.
Django вроде очень специфичная вещь. Для бюджетных проектов Python дорог, скорее возьмут PHP. Для дорогих — скорее Java / Net. По крайней мере у меня сложилось такое впечатление.

За счет чего конкретно можно сказать что Python в тренде?

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

Есть ли смысл зависит только от вас, насколько хорошим специалистом вы сможете стать на этой платформе и интересны ли вам продукты для которых данный инструмент подходит.

Node.js — это javascript на сервере. Понимая, что такое JS и к чему может привести его использование не сервере, очевидный ответ — нет, не стоит.

Node.js — это javascript на сервере

вообщето нет. я не защищаю жабоскрип ни в каком виде, но тут — мимо

И на каком же языке по вашему пишут node.js разработчики?

на сервере
node.js разработчики

на плюсах

а те, кто пишут, используя ноду, пишут в основном на клиенте

На плюсах возможно пишут разработчики самой ноды. А вот node.js разработчики пишут как раз в подавляющем большинстве на JavaScript. TypeScript распространен гораздо меньше. Но не стоит забывать, что TypeScript, это хоть и удобная и качественная, но все же обертка над JavaScript.

А вот node.js разработчики пишут как раз в подавляющем большинстве на JavaScript.
Node.js — это javascript на сервере.
а те, кто пишут, используя ноду, пишут в основном на клиенте

определитесь уже, где запускается жабоскрипт

так где жабоскрип запускается?

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

и к чему же?

Нода хорошо применима в энтерпрайз-компаниях. Если вы хотите работать на большом, развивающемся проекте, то есть огромный смысл учить. Но недостаток Ноды в том, в отличие от ПХП, где есть куча готовых решений, на Ноде придется много чего писать руками. Другими словами, если вы будете работать в диджитал-агентстве, где все проекты мелкие и средние, то смысла учить нет. Если это большой проект, с полноценной компонентной архитектурой, SPA, сервер-сайд рендеринг, типа «бест практис», то за Ноду при любых плюсик.

Блин ребят, я не понял, хипстеры бросили js, node и уже на все переписывают на go и\или какието перделки\биндинги с typescript? Просто я месю старую версию энтерпрайза и у нас до сих пор jQuery.
З.Ы. микрософт покупает гитхаб я так понял комитить туда теперь будет зашквар, куда бородачи переходить будут? :-)

куда бородачи переходить будут?

old good floppynet

Доставка дронами и самокатами? Ну и как без блокчейна?

один самокатчик полностью доверяет следующему: «мамой клянус!»

Каждый самокатчик хранит всю цепочку флопаков :-) «Демонический смех»

Перший Український Приватний Репозитарій.

Державні Українські Програмні Артефакти

Из верстки в NodeJS — провальный вариант. Можно учить JS для React/Angular, но начинать учиться писать бэк на нем — самоубийство.

А можно конкретику, пожалуйста? В каких ситуациях это будет проявляться?

Согласен, язык очень специфичен если сравнивать с Python или Java. Но хотелось бы о подводных камнях подробнее.

Запрыгивая сразу в ноду люди пропускают базовые понятия параллелизма, на основе которого собственно и работает ивент-луп, но к этому сложно добраться, когда садишься сервисы на Express писать, и в итоге остается только поверхностное понимание асинхронности; приучаются к тому, что язык дает примерно ничего и постоянно надо тянуть зависимости, а также привыкают к велосипедам JS.

Я бы для начала при переходе из верстки поизучал алгоритмику на любом С-образном языке, подтянул дискретную математику, разобрался с башем и в целом администрированием линукса, ознакомился с SQL и транзакционностью. А потом уже взял язык, который понравился в процессе обучения больше всего (поскакать по Cpp, Java, C#, Python, Go в процессе — нормально), его самый популярный фреймворк и начал пилить.

Но это если хочется в бэк. Чтобы написать 3 круд-вьюхи и консьюмер вебсокета для аппликейшена со всей логикой на фронте хватит и пары часов документации ExpressJS.

подтянул дискретную математику

а это вам зачем на бекенде?
и:

разобрался с башем и в целом администрированием линукса

тоже весьма опционально, и скорее найс ту хев

Та ну ви що, паралелізм і асинхронність це ж базові поняття в програмуванні. Як тим хто цього не знає диплом програміста дають і як вони взагалі прцюють?!

Я бы для начала при переходе из верстки поизучал алгоритмику на любом С-образном языке, подтянул дискретную математику, разобрался с башем и в целом администрированием линукса, ознакомился с SQL и транзакционностью.А потом уже взял язык, который понравился в процессе обучения больше всего (поскакать по Cpp, Java, C#, Python, Go в процессе — нормально)

Понять что писать бэк-энд на js тот еще кайф, плюнуть и перейти в Java/.Net или четт другое. :-)

У серверного js много камней, с async await стало полегче а вообще учится надо паралельно, на практики и если повезёт в большой команде. Express и koa это конечно хорошо но лучше сразу начать с next.js

достаточно удобная технология, хоть и специфичная

Для данной целевой аудитории PHP удобнее и менее специфичен

Можно, пожалуйста, конкретику?
Python как язык кажется хорошим вариантом. Какие есть подводные камни?

Python хорош, но не для тех, кто интересуется node.js

В сравнение с пхп он прекрасен

Ну да, если сравнивать Python 3.7 с PHP 4, то 100%

Но вот если смотреть на PHP 7.2, то Python где-то в каменном веке.

Это конечно, если мы говорим о веб, возможно как обертка для Сишных либ он хорош.

Ти порівнюєш мову загального ужитку і мову, у назві якої навіть записано Hypertext Preprocessor, наскільки вони підходять для власне hypertext preprocess-ування?
Вгадайте переможця!

От коли ми зможемо робити файли .pyhtml з тегами <?py ?>, тоді хоч якось їх можна буде порівнювати «для вебу».

А в загальному, звичайно, Python не ідеальний і зі своїми бзіками, але по часті гнучкості і зручних фішок PHP до нього ще пиляти і пиляти.

Не стоит. Создатель node.js забросил свое детище и плотно присел на Go. Лучше осваивайте typescript, т.к. он сейчас активно работает над deno — a secure typescript runtime on V8. Ну или сразу изучайте Go, т.к. deno написан на Go.

a secure typescript runtime on V8. Ну или сразу изучайте Go

Как я понимаю, чел пишет биндинг для V8 на Go (сама V8 написана на С++) — github.com/ry/v8worker (скорее всего идея заключается сделать более продвинутую реализацию ноды, у которой ядро будет написано не на С++, а Go, а на фронтэнде будет крутиться все тот же экмаскрипт в лице джаваскрипта, тайпскрипта и прочих).
Но вот, например, есть биндинг к V8 на PHP — github.com/phpv8/v8js (пишут естесно другие челы). Так что получается, что Go учить не обязательно — можно обойтись пыхой. :)

deno написан на Go.

Думаю, что для кодинга на тайпскрипте на deno не будет иметь большого значения, на чем написан сам deno. Разве что если ты пишешь модули к самому deno.
Ведь Node.js написан на плюсах, но веб-приложения на ноде ты же не на плюсах писать будешь (вот какие-то низкоуровневые модули для самой ноды — да). ;)

но веб-приложения на ноде ты же не на плюсах писать будешь

а на чем?!?!? Ж8-О

ну я не знаю — может какой-то сайт или чат, работающий на node.js, действительно на плюсах написан... Но вроде подавляющее количество веб-прпиложений на ноде — это все-таки джаваскрипт/тайпскрипт.

Нода под капотом юзает плюсы. Собственно, так и достигается в однопоточном языке многопоточность.

Нода юзает плюсы не равно же «программист на ноде пишет на плюсах»

Собственно, так и достигается в однопоточном языке многопоточность

Не могу уловить мысль. Можно более развернуто описать, как с помощью C++ в однопоточном языке достигнуть многопоточности?

Ну вот например метод pbkdf2 из модуля crypto. Он поддерживает многопоточность.
Проверял вот на своем компе. У меня 2 ядра, по 2 потока по умолчанию на ядро. Первые 4 вызова этого метода отрабатывают за примерно одно и то же время. 5ый уже ждет своей очереди.

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

Написав нативный модуль или как они там в ноде называются.

а как вы из main.cpp добиваетесь многопоточности?

Никак. Я завязал с С++ восемь лет назад.

никак для вас, но для остальных есть тайные знания

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

Как я понимаю, чел пишет биндинг для V8 на Go (сама V8 написана на С++)

Сам биндинг неплох — с помощью него можно из программы на Go исполнять js на движке V8, что иногда бывает полезным. Было бы хорошо, если бы Ryan Dahl на этом остановился. Но видно, что он любит по накурке скрестить ужа с ежом. Сначала подарил миру node.js, который уже стал ругательством похлеще PHP. Теперь пришла очередь deno. Фанаты node.js уже просят закрыть deno, т.к. понимают, к чему все это приведет. Но Ryan Dahl не остановить :(

P.S. Я понял секретный план автора node.js . После deno будут проекты с названиями oden и enod, а потом edon, oned, nedo и, наконец, done. Каждый последующий проект будет все больше удаляться от экосистемы js и приближаться к go. Последний проект — done — будет состоять из одного файла README со ссылкой на официальный сайт Go. К этому времени Go полностью захватит не только бэкенд, но и фронтенд. Ведь уже в следующей версии Go — 1.11 — будет поддержка WebAssembly.

Сам биндинг неплох — с помощью него можно из программы на Go исполнять js на движке V8

В этом мало смысла, в Go можно юзать биндинг для Lua-скриптов. А там вполне понятная виртуальная машина, написанная на чистом C, с компиляцией в байт-код, и возможностью использования прекомпилированных скриптов, а также есть jit-компилятор для Lua 5.1.

Последний проект — done

Я думаю, что по этой логике последний проект будет называться «gone»

Он как бы осознал ущербность и теперь переписывает в ц++ и расте

Лучше бы он удалил из интернета node.js и deno. Было бы больше пользы для всех

— Простите, я потерял сынишку в вашем торговом центре. Можно сделаю объявление по радио?
— О господи, да, конечно.
Наклоняется к микрофону:
— Я пишу на Go.

За «я пишу на Go» хоть не побьют, в отличие от «я пишу на node.js».

Вас лично побьют — вы же по 10 раз на день будете говорить))

учите С++, не ошибетесь

Конечно же нет, нод джс устарел 100 лет как — сейчас все пишут на реакте и ангуляре!

Если без сарказма, то — а какие вообще альтернативы могут быть для JS на бэкенде? Или имеется ввиду учить ли express.js вместо node.js (опять сарказм)?

учить express.js вместо node.js

А так можно было? О_о

Ну, на удивление можно ведь было учить React или AngularJS вместо JS. И становиться соответственно React- и Angular-девелопером.

Если вопрос к топик-стартеру — то планирую учить Node.js core, Express (на порядок опережает конкурентов, судя по stateofjs.com/2017/back-end/results), Mongo, Mongoose, PostgreSQL.
+ конечно тесты

а какие вообще альтернативы могут быть для JS на бэкенде?

вот сейчас вообще без сарказма было))

а какие вообще альтернативы могут быть для JS на бэкенде?

ПХП Наш!!! (к) (тм)

пик моды на ее уже прошел — теперь нода займет свою скромную нишу для которой изначально и предназначалась

Есть ли смысл осваивать NodeJS в 2018?

Да.

C одной стороны относительно низкий порог входа.

Очень даже относительно.

C другой — вроде как пик популярности прошел 1,5 года назад.

Возможно, как раз из-за «низкого порога», который оказался весьма относительным.

Есть ли будущее у этой ниши?

Да.

Если есть опыт только в верстке, не советую начинать что-либо делать без изучения основ для серверного программирования, особенностей js, способов и инструментов для тестирования и отладки.

На ДОУ сейчас такая статистика:
jobs.dou.ua/trends/?category=node.js

Посмотрел графики. Они разнонаправлены. Количество вакансий растёт, а отклик падает. Какие выводы из этого можно сделать?

Похоже, что есть высокий спрос на таких специалистов, и их не хватает, см. также
www.facebook.com/...​2/768077023381872/?type=3

Значит, смысл есть. :)

Украинский рынок IT, где правят бал аутсорсеры, отстает от западного на пару лет. На аутсорс отдают успешно стартовавшие проекты, которые перешли из фазы активного развития в фазу поддержки. Среди наших работодателей-аутсорсеров сейчас популярно то, что было популярно в штатах года три назад. Поэтому по графику вакансий можно сделать вывод, что три года назад популярность node.js была на пике. По графику откликов можно сделать вывод, что популярность ноды падает, т.к. разработчики менее инерционны по сравнению с компаниями-аутсорсерами.
Вывод — если хотите работать над трудноподдерживаемым callback hell’ом и спагетти-кодом от хипстеров из 2010-2014 годов, то изучайте node.js.

Главное везде вставить свои пять копеек ) Вы что-нибудь слышали про промисы ? async-await ? Я так полагаю что нет. Зачем давать советы если не разбираешься в вопросе и писать про спагетти-код в 2018?

Автору: учите нод, у ноды очень большое коммьюнити, а альтернативы npm с его количеством модулей и опять же коммпьюнити нет. Асинхронность языка это его преимущество для тех, кто умеет этим пользоваться и понимает как работает event loop в JS

Даже сегодня в новых проектах можно увидеть callback-hell с такими простынями, которые в экран полностью не влезают. Невероятно, но факт! Лично видел подобное изделие меньше года назад (чудом открестился от него), и оно еще как-то работает. То что поддерживать его почти нереально, никого не волнует. Заказчику лишь бы фичи новые пилили, аутсорс, понимаешь...

Так это дело не заказчика, а недодевелоперов которые это сделали

Підписатись на коментарі