
Nook
21.12.2016
21:13:11
Нет
RTFM

Vitaly
21.12.2016
22:17:05
Вопрос века

?Nes Gorgeous
21.12.2016
22:17:53
?

Google

Vladislav
22.12.2016
08:28:42
Вопрос. Допустим у меня есть чат-сервер на nodejs. Там очень много всего. И он уже обрастает кучей кода. Функционала там не меньше. И так вышло, хоть я т выносил модели db в разные файлы. Старался писать код покороче. Все равно его уже очень дохера. Кто знает как грамотно можно реструктуризировать приложение, пока еще не поздно и есть время. Ибо потом может быть совсем тяжко

Andrew
22.12.2016
08:30:06
сколько тысяч строк кода?

Nikolay
22.12.2016
08:34:10
Разбивай на маленькие модули по функциональности. Каждый модуль клади в отдельный репозиторий.

Глеб
22.12.2016
08:53:42
Вот, да, хороший вопрос. Кто как организовывает структуру проекта, какие есть best practices?

Vladislav
22.12.2016
09:04:36

Anton
22.12.2016
09:10:19

Vladimir
22.12.2016
09:11:13
Полторы тысячи строк - это несерьезно
Можно и в одном файле держать

Andrew
22.12.2016
09:13:23

Nikolay
22.12.2016
09:14:02
В одном файле это, конечно, перебор.

Vladimir
22.12.2016
09:14:50
Разбивать на репы нужно только в крайнем случае

Google

Vladislav
22.12.2016
09:14:58
Там много чего будет. И видео чат. Со стримингом видео на все платформы по разным протоколам.
и еще куча плюх

Andrew
22.12.2016
09:17:03
собираться все будет один раз, при старте сервера, в процессе работы будет выглядеть как один файл, а работать удобнее
имхо
а в целом звучит как несколько специализированных серверов, которым даже в одном месте быть не обязательно
подумай над тем, что если вдруг эта штука взлетит, то придется масштабировать
все равно будешь части потом выносить на отдельные потоки или даже машины

Nikolay
22.12.2016
09:19:07

Vladislav
22.12.2016
09:19:47
Я знаю. Над масштабированем думали. Но сказали, что думать о нем не надо. А в целом пишется так что если добавить еще один сервер то оно расширился нормально.

Pavel
22.12.2016
10:16:01

Igor
22.12.2016
10:21:57
и тогда только задуматься о разделении

Pavel
22.12.2016
10:22:19
Нет, конечно
Контролеров на 1000 строк не нужно допускать
Но париться насчёт разделения сейчас пахнет матёрой такой преждевременной оптимизацией

Igor
22.12.2016
10:25:06
Помоему выстраивание правильной структуры проекта должно входить в каждодневную привычку, а не быть чем то вроде снега на голову. Хотя конечно забегать далеко вперед не стоит.

Yergali
22.12.2016
11:01:38
всем привет

Google

Yergali
22.12.2016
11:01:49
пишу небольшой чат
работаю с монгуз
ошибки вызодят
DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated

Таймураз
22.12.2016
11:03:07
Добавь bluebird в проект

Eugeniy
22.12.2016
11:03:34
mongoose.Promise = Promise;
нативные промисы
либо блубирд

Таймураз
22.12.2016
11:03:47
global.Promise = require('bluebird');

Eugeniy
22.12.2016
11:04:01
можно и нативными обойтись

Таймураз
22.12.2016
11:04:11
Ну и для монгуса самого, да
Эти побыстрее будут

Yergali
22.12.2016
11:06:36
спасибо

Eugeniy
22.12.2016
11:08:35
Мне кажется если не особо много запросов будет, то блюбирд и нативные промисы ничем не отличаются

Таймураз
22.12.2016
11:09:03
Да какая разница
Всего лишь одна зависимость и 2-3 строчки сверху

Yergali
22.12.2016
11:09:23
пару слов о себе: я java программист постепенно осваиваю node.js

Eugeniy
22.12.2016
11:09:30
:D
ладно, ладно(

Vladimir
22.12.2016
11:10:15
0 зависимостей лучше чем одна
И пора запомнить, что подменять глобалы нехорошо

Google

Дмитрий
22.12.2016
11:10:45
Да да да, а весь проект в одном файле лучше чем модульный подход
Это не подмена глобалов

Сергей
22.12.2016
11:11:00

Vladimir
22.12.2016
11:11:01
Это именно что подмена глобалов

Admin
ERROR: S client not available

Vladimir
22.12.2016
11:11:16
global.Array = require('хуита');

Дмитрий
22.12.2016
11:11:23
Пфф

Vladimir
22.12.2016
11:11:24
безумие

Дмитрий
22.12.2016
11:11:48
Никто не мешает объявлять как BluebirdPromise
Это первое
Второе, это НЕ глобал

Vladimir
22.12.2016
11:12:01
Это ради бога

Никита
22.12.2016
11:12:10

Таймураз
22.12.2016
11:12:18
Господи, стороннее решение оказалось лучше, чем нативщина, а вы против?

Дмитрий
22.12.2016
11:12:23
А, сорян

Таймураз
22.12.2016
11:12:26
Почему?

Дмитрий
22.12.2016
11:12:38
Я извиняюсь)) Не присмотрелся к выложенному синтаксису
Да, так делать не стоит

Никита
22.12.2016
11:13:20
Если ты хочешь использовать bluebird и звать его Promise — делай const Promise = require('bluebird'); наверху каждого файла.

Vladimir
22.12.2016
11:13:27
Если бы они были полностью идентичны, но производительнее, это была бы другая история

Google

Никита
22.12.2016
11:13:35
Это затронет только твои вызовы к Promise.

Дмитрий
22.12.2016
11:13:56

Никита
22.12.2016
11:14:01
А если ты подменишь global.Promise, какая-нибудь зависимость может от этого слегка удивиться.

Таймураз
22.12.2016
11:14:01
Так у блуберда же только несколько методов лишних поверх спеки

Vladimir
22.12.2016
11:14:11
Это уже красный флаг

Никита
22.12.2016
11:14:23
Хуже только подменять глобалы в либах, это вообще полная задница.

Дмитрий
22.12.2016
11:14:45
Оок

Никита
22.12.2016
11:14:51

Vladimir
22.12.2016
11:14:59
Наличие лишних методов - красный флаг
Появляется неявная зависимость

Никита
22.12.2016
11:15:24
И нет, я могу представить себе ситуацию, когда либа сломается от замены Promise.

Таймураз
22.12.2016
11:15:51
Если реализация отличается, то ок
А вот с лишними методами не могу придумать случая, когда что-то сломается

Aleh
22.12.2016
11:16:09

Vladimir
22.12.2016
11:16:18
Сломается, когда в нативные промисы добавят метод с таким же названием