#angular
#angular
Вопрос:
Итак, сейчас я изучаю angular2 и читаю ngbook2 о модулях. Модули содержат компоненты, но также могут импортировать разные модули с их общедоступными компонентами.
И вопрос в том, какова область действия компонента модуля (в этом смысле область действия как части приложения, а не охват переменных внутри). Является ли модуль всем приложением или только какой-то частью, такой как заголовок, содержащий его компоненты?
Какое соглашение обычно используется?
Комментарии:
1. Это может быть и то, и другое, обычно у вас будет модуль уровня приложения, который импортирует, объявляет, загружает и т. Д. Все. Но у вас также могут быть меньшие модули, которые имеют свои собственные компоненты и т.д. Этот меньший модуль импортируется основным модулем.
2. В начале документа по архитектуре Angular 2 содержится отличный обзор, в котором объясняются модули и компоненты и их взаимосвязи друг с другом: angular.io/docs/ts/latest/guide/architecture.html
Ответ №1:
Обычный способ — рассматривать модуль как отдельную реализацию функции, которая может состоять из нуля или более сервисов, компонентов, директив и каналов, а также импортировать модули, которые используются для реализации этой функции.
Модуль может определять, какое из его содержимого, которое он экспортирует, должно быть доступно для импортеров.
Приложение может состоять из одного или нескольких модулей, при этом корневой модуль импортирует ноль или более модулей, где каждый импортированный модуль может импортировать ноль или более модулей.
Модули также можно использовать для — разделения приложения на части, которые можно загружать с задержкой — повторно использовать в разных приложениях — для создания области именования для селекторов.
Компонент — это повторно используемый визуальный строительный блок для пользовательского интерфейса, который отображается в виде HTML с обработчиками событий для реагирования на действия пользователя и изменения данных модели.
Комментарии:
1. Я предполагаю, что модуль Angular2 / 4 / 5 используется для многостраничных приложений
2. где каждая страница в многостраничном приложении является функцией
3. Нет, модуль предназначен для разделения приложения на части, которые можно загружать лениво или повторно использовать в разных приложениях, или для создания области именования для селекторов. Angular никоим образом не знает и не поддерживает многостраничные приложения (но и не препятствует этому)
4. да, я думаю, вы правы, возможно, упомяните это в своем ответе
5. Хорошее объяснение по модулю, но что такое компонент? Как насчет модуля, похожего на файл .cs в .NET, поэтому он может «использовать» (импортировать) другой .cs (модуль) или импортироваться. Компонент — это просто очень расплывчатая логическая вещь, которая всегда висит под модулем. Поэтому иногда компонент может быть методом / функцией внутри модуля. И иногда, когда модуль, на который ссылаются, является модулем верхнего уровня, тогда любой подмодуль можно рассматривать как компонент. В двух словах, модуль всегда находится на более высоком уровне, чем компонент.
Ответ №2:
В одном приложении может быть один основной модуль. Но ваше приложение может быть разделено на несколько модулей и может быть внедрено в основной модуль. Допустим, у вас есть большая библиотека приложений, которая содержит фильмы, трейлеры, песни и т.д. Вы дали основному модулю приложения имя «MyApp». но далее вы разделили свое приложение на несколько компонентов, скажем.
- MovieComponent
- SongComponent (далее разделенный на аудиокомпонент и видеокомпонент)
- TrailerComponent
Все эти компоненты разрабатывались и тестировались индивидуально и интегрировались в наш MyAppModule.
В случае, если что-то произойдет в нашей части трейлера, мы можем отказаться / протестировать наш TrailerComponent.
Таким образом, легко поддерживать большие приложения.
Я надеюсь, что это поможет вам понять. любые предложения приветствуются
Комментарии:
1. вы хотели сказать MovieModule, SongModule и т. Д.? немного смущен, так как вы сказали, что разделены на несколько модулей, а затем разделили их на компоненты. Когда у вас будет несколько модулей против нескольких компонентов?
2. Концепция не так проста, как разделение и объединение.