Middle
Как работи Angular?
sobes.tech AI
Отговор от AI
Angular работи въз основа на архитектура MVC/MVVM. Той използва компоненти, обвързване на данни и внедряване на зависимости за създаване на интерактивни уеб приложения.
Основни концепции:
- Компоненти: Структурните блокове на приложението, състоящи се от шаблон, клас и стилове.
- Модули (NgModules): Групират свързани компоненти, услуги и други елементи.
- Обвързване на данни: Синхронизира данните между модела и изгледа.
- Еднопосочно обвързване: Данните текат в една посока (например, от модела към изгледа).
- Двупосочно обвързване
[()]: Промените в модела влияят на изгледа и обратното.
- Услуги: Предоставят функционалност, която може да бъде използвана от различни компоненти (например, работа с HTTP заявки).
- Внедряване на зависимости (DI): Механизъм за предоставяне на зависимости (например, услуги) към компонентите.
- Шаблони: HTML с разширения на синтаксиса Angular за показване на данни и обработка на събития.
- Директиви: Променят поведението или външния вид на елементите DOM.
- Структурни: Добавят, премахват или манипулират елементи DOM (
*ngIf,*ngFor). - Атрибутни: Променят външния вид или поведението на съществуващ елемент (
[ngClass],[ngStyle]).
- Структурни: Добавят, премахват или манипулират елементи DOM (
- Жизнен цикъл на компонентите: Сбор от хукове, които позволяват изпълнение на код на различни етапи от живота на компонента (
OnInit,OnDestroy). - NgZone: Осигурява автоматично откриване на промени и актуализиране на изгледа при асинхронни операции.
Процес на работа:
- Зареждане: Приложението се зарежда, Bootstrap модулът стартира кореновия компонент.
- Рендериране: Angular компилира шаблоните и създава структурата на DOM.
- Обвързване на данни: Установява се връзка между данните и изгледа.
- Обработка на събития: Слушателите на събития реагират на действията на потребителя.
- Откриване на промени: Зоната следи асинхронните операции.
- Актуализиране на изгледа: При откриване на промени Angular обновява съответните части на DOM.
Пример за двупосочно обвързване на данни:
<!-- В шаблона -->
<input [(ngModel)]="userName">
<p>Здравей, {{ userName }}!</p>
// В класа на компонента
export class MyComponent {
userName: string = '';
}