@oop_ru

Страница 141 из 785
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
@fes0r еще проблема: сервисы зависящие от, например, request. Т.е. per-request сервисы
это уже твой модуль должен как-то разрулить уж сам

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

ну жава пакеты ж не суют наружу готовые сервисы, если только это не SmthUtils )
посмотри на kotlin, там ты можешь сделать пакет чисто с функциями

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
@fes0r а LIFT для структуры проекта нигде кроме ангуляра не используется?
подозреваю что просто по другому называют эти принципы

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 закинуть?

Страница 141 из 785