
Paul
04.03.2017
15:13:24
Ну да

Aleh
04.03.2017
15:13:39
Спека самих esm давно готовп, а про ноду уже тоже в tc39 все обсудили вроде

Paul
04.03.2017
15:13:44
Тянули из-за идеи кастомности резолва
Не знаю чем там кончилось

Google

Aleh
04.03.2017
15:14:05
Владимир Курчаткин даже poc версию делал с esm

Paul
04.03.2017
15:14:34
Ладно, не суть
Нормальная модульная система в расте сейчас: у каждого crate есть свой корень, можно запрашивать модули относительно текущего и относительно корня.
Т.е. нет проблемы "../../.." и нет проблемы одного корня, как с NODE_PATH
Резолв не контролируется. Мб на плагинах можно что придумать, но пока так
А, ну можно use менять вместо mod

Aleh
04.03.2017
15:16:24
Ну это клево да

Paul
04.03.2017
15:16:37
И будет проверка и т.д. Т.е. DI на уровне модулей можно запилить как замену use перед компиляцией

Aleh
04.03.2017
15:21:53
Но опять же, был бы кастомный резолв)
Причем на уровне модуля да
NODE_PATH не самое удобное
Надо что-то уровня файла с одной функцией
String -> String

Google

Aleh
04.03.2017
15:27:26
Мб еще context нужен
Т.е. что спрашиваем, откуда и результат уже нужный модуль
@fes0r еще проблема: сервисы зависящие от, например, request. Т.е. per-request сервисы

Sergey
05.03.2017
10:04:38

Aleh
05.03.2017
10:04:46
мой-то разрулит
а те, кто от него зависит не оч

Sergey
05.03.2017
10:05:00
ну я к тому что посмотри например на штуки вроде knex
они дают тебе возможность юзать пул соединений с базой абсолютно прозрачно

Aleh
05.03.2017
10:05:58
там ж на выходе модуля конструктор, а не готовый сервис
для такого потом DI и нужен)
ну либо я не понял

Sergey
05.03.2017
10:15:07
ну тип того)
ты можешь сделать промежуточный модуль который будет предоставлять тебе все готовенькое
но хз

Aleh
05.03.2017
10:15:46
могу, если он нужен один

Sergey
05.03.2017
10:15:47
мне тоже не шибко нравятся модули, они хороши когда нет стэйта или контекста

Aleh
05.03.2017
10:15:55
per-request очевидно могут жить параллельно несколько

Sergey
05.03.2017
10:16:03
угу

Aleh
05.03.2017
10:16:39
DI 1 : Modules 0

Google

Sergey
05.03.2017
10:17:43
с другой стороны модули дают тебе возможность юзаать разные версии одних и тех же зависимостей в рамках разных модулей
хотя не факт конечно что это именно заслуга модулей

Aleh
05.03.2017
10:18:04
ммм
а можно пример?)

Sergey
05.03.2017
10:18:36
не, мне это ненадо было никогда но часто слышу нытье что "а вот у нас нельзя так а хочется"

Aleh
05.03.2017
10:19:10
ну ты про неплоскую структуру npm-modules?

Sergey
05.03.2017
10:19:20
тип того
а вообще если сравнивать чисто esm и java пакеты
у тебя по сути наличие export лишь говорит о том что ты что-то публичное выплевываешь, могут быть и приватные штуки

Aleh
05.03.2017
10:23:49
ну жава пакеты ж не суют наружу готовые сервисы, если только это не SmthUtils )

Sergey
05.03.2017
10:23:52
а import это просто import

Sergey
05.03.2017
10:24:31
и выходит тоже самое
у тебя есть пакеты предоставляющие классы и есть классы + функции, есть просто функции
а ты уже можешь сделать IoC контейнер если захочешь
что-то вроде...
import {doSomeMath} from 'cleverModule'
import {Connection} from 'db';
export class SomeStuff
{
constructor(private connection: Connection);
}
и где-то сверху будет что-то типа
import {Connection, PgConnection} from 'db';
bind(Connection).to(PgConnection);
хз
интроспекции как бы нет потому всеравно все грустно)

Google

Sergey
05.03.2017
10:27:57
тоесть есть но нет информации о типах и потому тебе надо лепить уже на чем-то совсем сверху что с может сгенерить биндинги и фабрики в compile-time

Ramil
05.03.2017
12:42:47
здоров, сишарперы есть?

Admin
ERROR: S client not available

Sergey
05.03.2017
12:43:15
а тебе зачем?)

Ramil
05.03.2017
12:43:31
конечно же в корыстных целях)

Sergey
05.03.2017
12:44:11
ну я к тому что не тот чатик возможно ты выбрал. Тут филосовствуют на тему ООП, принципов проектирования и т.д. Не привязываясь к конкретному языку. А дотнетчики если нужны есть наверняка в отдельных чатах

Ramil
05.03.2017
12:44:33
ок, понял

Aleh
05.03.2017
12:47:12
фейсбук в реакте кстати делает что-то вроде
let service1;
export function injectService(s) {
service1 = s;
}
export function doSmth() {
service1.doSmth();
}
проблема в том, что нереально понять, как сбилдить модуль
ну и это еще дико неудобно, если делаешь руками
https://medium.com/@agent47darksoul/lets-talk-about-object-oriented-programming-d9f1602ebaa7#.gq0ojvy2l

Sergey
05.03.2017
14:04:47
оч крутая статья

Alexander
05.03.2017
14:07:31
да, неплохая

Aleh
05.03.2017
14:09:22
ну там еще оригинал стоит почитать
он больно упорот

Sergey
05.03.2017
14:10:32
помню летом даже перевод на хабрах всяких собрал "интересные мнения" в комментах...

Aleh
05.03.2017
14:11:36
оригинал, в смысле статью, на которую написан этот ответ
@fes0r а LIFT для структуры проекта нигде кроме ангуляра не используется?

Sergey
06.03.2017
09:53:03

Google

Sergey
06.03.2017
09:53:09
мне просто понравилось и я для симфони накидал

Aleh
06.03.2017
09:53:25
вот мне было бы интересно поглядеть как вне жс это живет

Sergey
06.03.2017
09:54:23
https://gist.github.com/fesor/76d39b19b18f7103a7c058301dc6a8fe

Aleh
06.03.2017
09:54:43
ну да, я про нее

Sergey
06.03.2017
09:54:55
ну как, это просто проект с нормальным разделением на модули
)
модули, слои...
coupling coheasion
что бы удобно было
у меня пока есть пара моментов которые делают это неудобным (мэппинги доктрины)

Aleh
06.03.2017
09:55:41
нигде не надо было свои операторы в doctrine закинуть?