LINUX.ORG.RU

node js best practices

 ,


0

1

Господа подскажите за nodejs как правильно готовить, есть ли какие аналоги питонячих «virtualenv» или в этом нет необходимости?

Читал давненько новость про форк nodejs и ссору с комьюнити. Что более лучше выбрать?

Что стоит почитать новичку и стоит ли вообще браться за это(inb4 ненужно, но чую скоро придётся)?

Как в node с ORM или как вообще это всё выглядит?

//умею в python+django+flask + etc...

★★★★★

есть ли какие аналоги питонячих «virtualenv» или в этом нет необходимости?

nvm, n

Читал давненько новость про форк nodejs и ссору с комьюнити. Что более лучше выбрать?

Забей, их склеят скоро. Бери 0.12, если не разбираешься.

Что стоит почитать новичку и стоит ли вообще браться за это

Берешь пакеты lodash, async, es5-shim, stylus, jade, express и читаешь там документацию и сорцы. Насколько подробно - решай сам.

Как в node с ORM или как вообще это всё выглядит?

ХЗ. Я этими наворотами не пользуюсь. У mongoose качество точно вменяемое, но оно под монгу. Чего там для сиквелей - не знаю.

http://npmsearch.com/ - позабивай ключевые слова, там более-менее правдоподобная сортировка.

Vit ★★★★★
()

ставишь ноду, виртуаленв не нужен, ибо оно сразу умеет локально все ставить

про форк не думай, он всеравно сливается обратно

Что стоит почитать новичку и стоит ли вообще браться за это

на этот вопрос тебе никто не ответит, изучить что то всегда в плюс имхо

Как в node с ORM или как вообще это всё выглядит?

их полно

umren ★★★★★
()

Забыл сказать. Когда кодить будешь - поставь обязательно eslint и настрой под свои требования.

Vit ★★★★★
()

Лучшая практика по использованию ноды — не использовать. Она реально редко где нужна. Максимум прокси/агрегатор.

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

Вот и я не могу понять. NodeJS это же инструмент для бедных, которые с фронтэнда в бэкэнд вкатиться пытаются.

abc
()
Ответ на: комментарий от umren

cuz pip sucks?

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

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

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

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

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

Ок, т.е. меняем язык и всю инфраструктуру только из-за того что dependency management tool нас не устраивает. Настоящий подход инженера)

p.s. на счет

cuz pip sucks?

за 5 лет работы с python проектами никогда такой проблемы с зависимостями не встречал.

abc
()
Ответ на: комментарий от umren

Э? вкупе с virtualenv у питона какие-то просто запредельные возможности создать свои зависимости и пакеты. Т.е. ну вот вообще никаких проблем.

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

Так вроде фронтам нода нужна исключительно как платформа для запуска грунта/гульпа

Как называть людей которые пишут UI и клепают прокси-методы на ноде? Кто угодно только не бек.

anonymous
()

В питоне самая неудобная система управления зависимостями. Я не знаю, что может быть хуже. Ситуацию спасает buildout, который складывает яйца в указанную в конфиге директорию и генерирует необходимые исполняемые файлы, в которых пропатчен sys.path. Ещё бы он умел удалять старые версии, цены бы ему не было. Есть правда рецепт, который позволяет перетащить старые яйца в другую директорию, но на этом всё и заканчивается.

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

Но ЗАЧЕМ, если:

А вот бывает у вышестоящего: «А давайте теперь все писать на %язык/платформа нэйм%, потому что я так хочу»

И вот такие топики появляются.

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

А вот бывает у вышестоящего

Предложи почитать https://www.joyent.com/developers/node/design/errors

The best way to recover from programmer errors is to crash immediately

Нода не может в try/except так как течет как последняя сучка.

Плюс в официальной доке:

The safest way to respond to a thrown error is to shut down the process.

Уже не раз наталкивался на одминов которым приходится поддерживать ноду: «Ой, воркеры постепенно отжирают всю память, нам пришлось в крончик рестарт впихнуть». Конечно пришлось, потому что нодебиберы не могут в документацию и прямой код.

anonymous
()

Вменяемые люди эту ноду готовили, готовили, готовили, готовили, готовили и готовили, в итоге ушли в Go. Вот как правильно готовить ноду.

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

Именно! Но с учетом того что в Python 3 есть coroutines, asyncio и прочее NodeJS дважды не нужен. Для особых эстетов есть Twisted и Tornado. В итоге делаем выводы. Те кто использует NodeJS аргументируют это такими базвордами как изоморфные приложения, один язык везде. Но что получается в итоге ?

Вот что говорят в интернетах про ваш изоморфный подход: «Я давно пытаюсь найти более полезное применение (помимо общего куска кода для валидации данных) этой интересной идее, но никак не получается. Круг задач, которые решают сервер и клиент, и методы их решения настолько различны, и общего кода получается настолько мало, что нет практически никакого смысла в предпочтении на стороне сервера node.js вместо php/python/ruby/java. Мало того, javascript сильно отличается от упомянутых языков программирования, что в большинстве случаев приводит к увеличению объема кода, который требуется написать на нем для решения типовой задачи, по сравнению с классическими объектно-ориентированными подходами.»

И далее по поводу один язык везде. Простите, но Javascript ужасен. Даже с ES6 он по прежнему ужасен.

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

Но с учетом того что в Python 3 есть coroutines, asyncio и прочее NodeJS дважды не нужен

в нодежс каждая либа поддерживает этот подход, вся инфраструктура готова под это _от рождения_, а в питоне что? ну есть asyncio толку от него, если его не драйверы бд, не фреймворки не поддерживают?

питону пора на свалку, тем более ты описываешь 3ю ветку, а еще не портировали кучу всего даже со 2.. и никто это делать не будет

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

И далее по поводу один язык везде. Простите, но Javascript ужасен. Даже с ES6 он по прежнему ужасен.

нормальный язык, кроме того js is the target, тебя никто не заставляет на нем писать

берешь coffeescript (мой выбор на данный момент, вполне себе питон+руби), typescript, livescript, purescript, clojurescript + еще куча на выбор и используешь всю инфраструктуру ноды, а питон что? питон сосет если тебе не нравится язык

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

Плюсую. Лучше это не использовать. Пожалей тех, кому это потом придётся поддерживать... javascript на серверной стороне - ЗА ЧТО??? :(

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

Нода не может в try/except так как течет как последняя сучка.

Во-во. Сколько головной боли из-за этого. :( Исключение в java-приложении обычно заканчивается ошибкой 500 (internal server error), если, конечно, это не out of memory. Исключение (любое, сцуко!) в ноде тупо крашит всё приложение!

BattleCoder ★★★★★
()

Напомню, что npm только в новой пререлизной версии научился переиспользовать зависимости, а не выкачивать их рекурсивно. Шёл 2015-ый год.

https://github.com/npm/npm/releases/tag/v3.0.0

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

питону пора на свалку, тем более ты описываешь 3ю ветку, а еще не портировали кучу всего даже со 2.. и никто это делать не будет

С разморозкой! 2015 год на дворе.

Мы уже 3 года новые проекты пишем только на Python 3. Проблем с библиотеками нет.

Все асинхронные драйвера для БД, очередей и прочего давно уже есть.

abc
()
Ответ на: комментарий от umren

берешь coffeescript (мой выбор на данный момент, вполне себе питон+руби)

Ты действительно используешь это говно с неявным return ? Где для обхода этого говна в языке пилят всякие костыли.

Я лучше возьму typescript ок для логики на фронтэнде, и буду обмазываться source maps.

Но я не хочу этим обмазываться и на бэкэнде. Я лучше возьму нормальный язык и напишу как надо. Мне время дороже.

abc
()
Ответ на: комментарий от umren

берешь coffeescript (мой выбор на данный момент, вполне себе питон+руби), typescript, livescript, purescript, clojurescript + еще куча на выбор

И забываешь про автодополнение, не так ли? С тайпскриптом надо обмазаться tsd с чужими определениями, которые, если повезёт, актуальны, если вообще существуют. Кофескрипт всеми интернетами вообще отговаривают использовать, мол, есть же es6 и непонятно, будет ли автор языка его поддерживать.

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

ну есть asyncio толку от него, если его не драйверы бд, не фреймворки не поддерживают?

Тебе разработчики ноды напели? Все что ты хотел здесь перечислить запилили в то же время как выходил PEP на asyncio: aiohttp, aiopg, aiomysql, да тыщи их на самом деле.

берешь coffeescript

Его будущее с выходом ES6 более чем сомнительно. Рассуждать о CS как о чем-то самостоятельно предельно глупо, а JS п**дец какая конфетка.

Но 50 оттенков серого еще никто не отменял, хипстота будет насильно ловить кайф при любых объективных обстоятельствах.

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

Ну, КМК, единственное, что всё ещё крутится на 2.7 - это jython - это когда тебе надо на мэйнфрейме запустить многопоточные асинхронные программы на питоне 8-()

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

это же хипстор, возомнивший себя погромистом, типа прочитал кнута и бох теперь

anonymous
()
Ответ на: комментарий от abc

Все асинхронные драйвера для БД, очередей и прочего давно уже есть.

2 чаю вам сир, в срочном порядке рассмотрю сей моменты.

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

Берешь dg.

Небось ещё одно динамически типизированное говно?

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

webasm

решение для монетизации вашего файлового траффика!

Вот это поворот!

anonymous
()
Ответ на: комментарий от umren

в нодежс каждая либа поддерживает этот подход,

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

Если ты не видишь в чем разница колбеков и yield from/async/await, то ты такой же серый нодебибер как и все подобные школьники.

anonymous
()
Ответ на: комментарий от BigAlex

Да судя по профилю umren на нормальных языках он не программировал. Вылез из PHP и дорвался до NodeJS. Поэтому вполне понятно почему он несет полную чушь.

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

ну если python и ruby это не нормальные языки, то да

программирую на говне в продакшене since 0x's

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

Ты что, он же самого Кнута читал!!!

anonymous
()
Ответ на: комментарий от abc

... но никак не получается

Пионеропроблемы.

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

Уси-пуси... диванные войска негодуэ :)

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

Как сомнительно будущее ES6 с выходом webasm

Ух и начитался я восторженных речей про «писать на любом языке в веб вместо ужасного JS».

Одно только народ не понимает. Webasm - ассемблер для числодробильни. В будущем обещают добавить интерфейс к GC-объектам и DOM-у. Да вот только этот интерфейс будет очень низкоуровневый. И тогда каждый Вася Пупкин начнет воплощать свои фантазии о том, каким он видит DOM на своем любимом языке. И будут у нас сотни разных несовместимых DOM-ов на всевозможных языках.

И каждый из этих DOM-ов будет г**ном. Потомучто текущий js-интерфейс десятилетиями вылизывался седобородыми старцами из w3.org И заменить его в полной мере наколенной поделкой на другом языке - задача невыполнимая. Так что от js в браузере никуда не деться

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

Потомучто текущий js-интерфейс десятилетиями вылизывался седобородыми старцами из w3.org И заменить его в полной мере наколенной поделкой на другом языке - задача невыполнимая

Его и не собираются заменять.

tailgunner ★★★★★
()

на ноде получаются неплохие утилиты командной строки для shell-а:

Например (включая обработку зависимостей): npm, lessc, csslint, jslint, кастомная сборка jquery

Все это добро легко интегрируется например в IDE.

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

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

утилиты командной строки для shell-а

О, да, без асинхронности тут не обойтись.

npm, lessc, csslint, jslint, кастомная сборка jquery

Все это указывает только на то, что фронтендщики сами себе пишут тулчейн и только.

BigAlex ★★★
()

Кстати, вот что по поводу вашей NodeJS думают забугром:

Hello everyone, after being nodejs developer for long time I'm glad to become ruby guy. Rails seems to be much more mature than any framework within npm

Похоже хипстеры снова поняли что облажались с нодой.

пруф тут

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