169 похожих чатов

@Limit_of_zero можешь напомнить почему при лейзи shared нельзя?

27 ответов

7 просмотров

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

не, можно. Просто это плохо тришейкится. Мы больше придерживаемся подхода близкому к one component per module, чтобы в модуле было только то, что нужно ему. За счет этого app бандл неплохо порезали. Ну и некоторые другие лейзи модули легче стали.

Denis Makarov
не, можно. Просто это плохо тришейкится. Мы больше...

Да, поддерживаю, такой подход очень удобен

Denis- Автор вопроса
Oleg Safonov
я есть почитать что про one component per module?)

Вероятно, тут не о чем читать. Просто любой компонент идёт со своим модулем, который имеет экспорт этого компонента. Вот и вся идея

Alex Bu
Вероятно, тут не о чем читать. Просто любой компон...

блин, все эти идеи по моему опыту разбиваются о суровую реальность) Есть примеры больших проектов, реализованных таким подходом?)

Oleg Safonov
блин, все эти идеи по моему опыту разбиваются о су...

Хм, пример с разбиванием о реальность приведите, плс?) Пример проекта, полагаю, среди популярных либ найти можно

Alex Bu
Хм, пример с разбиванием о реальность приведите, п...

С этой конкретной идеей примеров нет, т.к. не встречал нигде и не пробовал сам,)

Alex Bu
Попробуйте, понравится)

А как выглядит при этом иерархия каталогов? Вот у меня есть компонент-страница, т.е. некий компонент, для которого есть свой путь и который рендерит кусок какой то логики. У этого компонента есть отдельный модуль (например, page.module) Внутри компонента есть (например) 10 компонентов, которые нигде больше не используются. Мне создавать рядом с page.module каталог с ещё 10 модулями по одному компоненту в каждом?

Denis
screenshot а DDD подходит под этот вывод?

А откуда картинка такая, не подскажите?)

Denis- Автор вопроса
Oleg Safonov
А откуда картинка такая, не подскажите?)

https://www.angulararchitects.io/aktuelles/tactical-domain-driven-design-with-monorepos/

Denis- Автор вопроса
Oleg Safonov
А как выглядит при этом иерархия каталогов? Вот у ...

Всё просто на самом деле. Давайте сначала с термионологией разберемся. Я использую следующие понятия - view модули - widget модули Под view модулями я понимаю модуль, реалзиующий кусок философской логики проекта, например AdminModule, в котором будет будут свои view модули, например, AdminListModule, AdminCardModule Под widget модулями я понимаю модули, которые реализуют независимый от философии кусок экрана, например, PersonCardModule, ItemsListModule Соответсвенно, component per module подход используется для widget модулей. Таким образом, например, в PersonCardModule будет примерно следющее NgModule({ imports: [все модули, которые обеспечивают контект файла <app-person-card>], declrations: [PersonCardComponent, +все компоненты, пайпы и проч, которые обеспечивают контент файла <app-person-card>], и важный момент exports: [PersonCardComponent] }) Этот PersonCardModule соответствует только PersonCardComponent и несет всё описание, необходимое для PersonCardComponent Использовать его нужно, например, в view модуле AdminCardModule. Импорт PersonCardModule даст возможность в AdminCardModule использовать тег <app-person-card>, в которые, вы можете прокинут админа, то бишь <app-person-card [person]="admin"> Если есть где-то потребность использовать PersonCardComponent, вы просто импортите в том месте PersonCardModule и используете как<app-person-card [person]="admin или user или person или woman и проч"> Примерно такой подход, очень удобный. Складываю все widget модули в специльную папочку widgets, в зависимости оттого, где используется этот компонент. Если везде используется, то widgets лежит прям на самом верху, то бишь в src/app/widgets/person-card, если только в разделе Admin, то там тоже будет widgets, где эта папка ляжет, то бишь src/app/views/admin/widgets/person-card

Alex Bu
Всё просто на самом деле. Давайте сначала с термио...

Спасибо за подробный разбор, теперь понятно о чем речь, сам придерживаюсь чего то похожего) я просто изначально подумал, что речь вообще обо всех компонентах была)

Oleg Safonov
Спасибо за подробный разбор, теперь понятно о чем ...

Так все компоненты так и идут. Более Вам скажу, так идут и все директивы, пайпы: каждый со своим модулем

Alex Bu
Так все компоненты так и идут. Более Вам скажу, та...

Ну вот а примере выше в NgModule({ imports: [все модули, которые обеспечивают контект файла <app-person-card>], declrations: [PersonCardComponent, +все компоненты, пайпы и проч, которые обеспечивают контент файла <app-person-card>], и важный момент exports: [PersonCardComponent] }) В декларациях несколько компонентов же, а не один

Oleg Safonov
Ну вот а примере выше в NgModule({ imports: [все...

Да, я так написал, так как иногда бывают случаи, что внутри виджета есть компоненты, которые 100% будут использоваться только в этом виджете, нигде больше. Или пайп только для этого виджета, нигде больше. Тут отпадает смысл делать для них отдельный модуль для каждого Но вообще, в моих проектах в декларейшенсах почти всегда - один компонент

Alex Bu
Да, я так написал, так как иногда бывают случаи, ч...

Пока это контринтуитивно для меня, что нет компонентов, которые 100% в одном компоненте будут. У меня непонимание только с ними были, я этот момент подчеркнул в изначально вопросе) Но возможно, тут дело в прикладной области, по разному бывает, конечно

Oleg Safonov
Пока это контринтуитивно для меня, что нет компоне...

Не очень понимаю, про какие компоненты Вы, можете какой-нибудь простенький пример?

Alex Bu
Не очень понимаю, про какие компоненты Вы, можете ...

Ну, к примеру, у меня есть страница с а-ля файловым менеджером. Пользователь выбирает файл для дальнейшей работы Вот внутри этого менеджера (это view в Вашей терминологии) есть компонент отображения файла (с контекстным меню и прочим) (это widget с одной стороны, с другой есть ли смысл выносить его в отдельный модуль?) Я уверен, что этот компонент я больше нигде переиспользовать не буду

Oleg Safonov
Ну, к примеру, у меня есть страница с а-ля файловы...

В целом, это еще от ситуации зависит. Здесь файловый менеджер может оказаться совсем не view модулем, а именно widget модулем. Тогда всё логично, что внутри widget модуля (файловый менеджер) есть только в нем используемый компонент (файл) Часто view модулю соответствует роут, а сам компонент по этому роуту как бы играет роль лейаута

Oleg Safonov
Ну, к примеру, у меня есть страница с а-ля файловы...

Я сейчас уйду часа на 4, готов продолжить обсуждение по возвращении или завтра)

Alex Bu
Я сейчас уйду часа на 4, готов продолжить обсужден...

Да, хорошая идея Го завтра ddd vs ng, там тоже вопросы есть) А пока спасибо за дискуссию, вроде понятно всё)

Похожие вопросы

Обсуждают сегодня

Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
8
Всем привет. Подскажите, пожалуйста, как вы реализовываете следующий функционал. Допустим есть форма, в которой имеется выпадающий список со значениями. Значения хранятся в БД...
Евгений
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта