Комментарии 54
Это миф, что Node жрет много памяти, если конечно не ставить бесконтрольно модули сомнительного качества.
Плюс в Node js можно включить ручное управление Garbage Collector, если вы ограничены в памяти и хотите более интенсивно чистить память.
Автор не учитывает, что из рассмотренных языков лишь у джавы статическая типизация. Поэтому что-то большое в разы проще на ней писать. Компилятор кучу ошибок отловит ещё до запуска.
В node.js про ошибку же мы узнаем лишь после запуска, точнее как до соответствующего места кода дойдет исполнение. В худшем случае код исполнится без ошибок, но неправильно (например, передали функции меньше параметров чем нужно).
Поэтому статическая типизация в языке, который юзается в фреймворкк — то, на что я бы приоритетно обращал внимание. С ростом проекта хайповость и смузиевость технологии будет меркнуть на фоне его поддержки и развития.
А самое главное, это не один большой процесс, который если упадет, то упадет все. И если что-то работает не будет, оно не будет работать в одном конкретном месте. Поймал ошибку, устранил. все остальное работает.
это не мешало постоянно ловить баги в рантайме.
Эксепшны)
Чтобы ловить исключения уровня: «Ой, у объекта нет такого свойства!» в рантайме — нужно сильно постараться.
А самое главное, это не один большой процесс, который если упадет, то упадет все.
А какой именно веб-движок?
Я не помню точно что там было в древности, но вроде везде все запросы обернуты в try/cach, так что единственное, что может упасть, это обработка запроса после чего движок покажет ошибку. Все праллельные юзеры и запросы ничего не заметят.
там где PHP просто проигнорирует какой нибудь отсутствующий параметр, ASP ругнется и покажет ошибку.
Просто прекрасно) Если эта ошибка приводит, скажем, к порче данных, то поиск причины рискует быть очень увлекательным.
просто интерфейс портит
Интерфейс портят ошибки в программе, а не инструмент, который их находит) Грамотную обработку ошибок с наличием исключений построить не сложно.
и лезешь пытаешься воспроизвести проблему.
И ведь сразу ясно, куда нужно лезть. Со слабой, да еще и динамической типизацией ошибка может дрейфовать в далекие дали и порождать спец.эффекты, вроде результата деления строк на цифры. Отладка будет печальна.
Так как Django основан на Python, о производительности этого фреймворка и о его поддержке можно не беспокоиться.
Имеется ввиду то, что можно не беспокоиться о производительности питона и быть уверенным, что Джанго на порядки медленнее самых быстрых фреймворков? Просто ведь так оно и есть:
www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=fortune
Вроде бы Django это фреймвор на Python, и Express это фреймворк на node.js.
Но сравнивая вы берете репозиторий node.js и говорите что у него больше звезд, хотя если взять репозиторий express, что кажется логичнее, то звезд у него будет примерно столько же.
Благодаря тому, что в Node.js имеется система ввода-вывода, не блокирующая главный поток, эта платформа демонстрирует высокую производительность. Достойная скорость обработки запросов достигается благодаря использованию JavaScript-механизмов конкурентного однопоточного выполнения кода.
Любопытно, как главный недостаток ноды/языка — однопоточность, сделали приемуществом.
И список команий, использующих spring, явно коротковат. Тотже Netflix учавствует в разработке Spring Boot (Spring Cloud Netflix) и заявили, что теперь это их «главный» java фреймфорк. netflixtechblog.com/netflix-oss-and-spring-boot-coming-full-circle-4855947713a0
Еще одна рекламная статья ноды…
- В Node js приложение давным-давно можно запускать в кластере для утилизации всех ядер.
- 1.5 года назад в Node js появились Worker threads для реализации многопоточности
- Большинство веб приложений занимаются большим кол-во I/O, а не числодробилки. Вот поэтому многопоточность несколько лет спустя завезли
Какие?
А то получается как в песне группы "Манго-Манго": "У нас есть ТАКИЕ приборы! Но мы вам о них не расскажем."
Adonisjs например
Спасибо за ответ, коллега. Мне почему-то кажется, что коллега Alexufo имел что-то другое в виду, говоря о "дохлой архитектурной лошади".
Насколько я вижу, Adonisjs — это MVC-фреймворк (как они сами себя позиционируют), заточенный для разработки web-приложений с MVC-архитектурой (некоторые находят сходство с PHP-фреймворком Laravel). В то время, как expressjs — это практически чистый web-сервер (типа apache или nginx).
В архитектурном плане я ожидал сравнения express с чем-то вроде fastify, koa, restify и им подобным. Мне жутко интересно, почему архитектура express "дохлая" и что может являться примером "живой" архитектуры.
Зайдите в комментарии к MarcusAurelius прямо вот последние как раз об этом, я, конечно, не могу с должным гонором стучать себе в грудь, заявляя — что в fastify все архитектурно академически корректно, но он сделан явно на переосмыслении накопившихся недоразумений.
А я специально умолчал. )) Да, я имел ввиду fastify и koa. Можно посмотреть лекцию мейнтейнера fastify и причины, которые побудили его переписать express. Он сильно на него похож и популярные плагины express форкнуты и адаптированы к fastify.
Не используйте его.
Скажите, пожалуйста, об этом разработчикам Nest.js. А то они, похоже, не в курсе )))
Fastify provides a good alternative framework for Nest because it solves design issues in a similar manner to Express.
К экспрессу нет жесткой привязки. Я так понимаю, они еще не готовы базироваться на fastify, потому перекладывают на пользователя — если оно ему нужно. А оно может ему действительно и не нужно. Но призывы отказа от изучения отдельного express звучат не первый год. Express уже обречен и живет только из-за легаси и кучи информации для студентов. Если есть вещи эволюционно следующие, express, собственно для чего изучать и использовать — не понятно.
MarcusAurelius пилит свой фреймворк и это должно быть бомбой, по моим расчетам. То есть, есть все шансы ему быть использованным по всему шарику, если они покроют кейсы как для корпоратива так и для одиночек фриланеров. Отличный опыт, отличные теоретические знания и жесткое понимание текущих проблем.
А если серьезно, к экспрессу у неста нет жесткой привязки, но когда читаешь документацию, то тут, то там натыкаешься, что вот то или вот это не работает, если используется фастифай.
Я разрабатывал на фастифай, но если честно не понял чем он лучше в плане разработки, чем экспресс. Нест вот другое дело, после него возвращаться на экспрес, фастифай и тд не хочется, хотя по сути, это пример того, как можно прокачать любой js-ный сервер до хорошей архитектуры. Нест устроен так, что он подталкивает разработчика выстраивать правильную архитектуру в проекте. В отличии от…
В nest хорошо все, кроме orm
И пишите то вы все равно не на express-е используя nest. Меня он как-то пугает своей монструозностью и кучей этих всех инжекшинов фабрик каких-то интерцепторов — это когда с шарпа какого нибудь переходишь, там все эти паттерны родные. Но если говорите, что оно наоборот, легче… это интересно.
Я писал о том, что рассматривать самостоятельно Express как рассмартивают в статье нельзя, ну какой Express в 2020 году. Закопать его пора.
И пишите то вы все равно не на express-е используя nest. Меня он как-то пугает своей монструозностью и кучей этих всех инжекшинов фабрик каких-то интерцепторов — это когда с шарпа какого нибудь переходишь, там все эти паттерны родные. Но если говорите, что оно наоборот, легче… это интересно.
Угадали, я с .net перешел )))
Меня он как-то пугает своей монструозностью и кучей этих всех инжекшинов фабрик каких-то интерцепторов — это когда с шарпа какого нибудь переходишь, там все эти паттерны родные. Но если говорите, что оно наоборот, легче… это интересно.
а как вообще можно писать крупное приложение без di?
В том то и проблема js-ников, они не не хотят/не могут разобраться с простейшим паттерном и придумывают любые отговорки, лишь бы не использовать проверенные временем решения
Честно говоря, я — не фанат Java. И я не будут использовать Spring Boot для серверной разработки в 2021 году.
Только потому что вам не нравится Java вы отправили Spring на последнее место?
Вообще Spring можно использовать с Kotlin или Groovy.
О Flask'е для питона даже не упомянуто, для ноды тоже есть альтернативы помимо Express'а. Ещё есть .Net с его ASP MVC.
В общем, этой статье больше подошло бы название «Сравним Express, Django и Spring Boot».
This account is under investigation or was found in violation of the Medium Rules.
видать ему так же намекнули, а он агрессивно настаивал на своей правоте)
если кому-нибуть интересно есть фрейворк для clojurescript (компилится в js)
называется Macchiato (пилит наш соотечественник кстати)
Переключился (еще в процессе) на JS из мира PHP MVC фреймворков, так как тяжело эти два языка у меня в голове одновременно уживались.
Сильно привык к PHP, аж закостенело всё. Пока JS «заходит» тяжело. JS — не просто «немного другой» синтаксис. Он сильно другой все-таки.
Для начала выбрал nextjs (под капотом там react), есть аналог nuxtjs (по капотом vue).
Пока у меня много времени уходит на поиски информации «как правильно делать». И такое буквально на всех этапах. TypeScript — симпотечен, npm — пугает).
Кстати gitHub (Майкрософт) в этом году купил NPM.
Интересно почему cherrypy такой не популярный, если про django занют все, про bottle, flask есть упоминания, то про cherrypy вообще не слышно.
На Go, например, писать бекенд можно и без фреймворка (так часто и делают по началу, потом создают 100501 фрейморк — самый правильный и лучший ;) ).
Выбираем лучший бэкенд-фреймворк 2021 года