Middle
Чӣ гуна Angular кор мекунад?
sobes.tech AI
Ҷавоб аз AI
Angular ҳамчун як чаҳорчӯба барои эҷоди барномаҳои як саҳифа (SPA) кор мекунад. Компонентҳо ва принсипҳои асосии он:
- Модулсозӣ: Барномаҳо аз модулҳо сохта мешаванд.
@NgModuleмуайян мекунад, ки кадом компонентҳо, хизматрасониҳо ва дигар элементҳо ба модул тааллуқ доранд. - Компонентҳо: Блокҳои асосии сохтани барномаҳои Angular. Ҳар як компонент аз шаблон (HTML), синфи TypeScript (мантиқ) ва услубҳо (CSS) иборат аст. Декоратори
Componentонҳоро пайваст мекунад. - Бандии маълумот (Data Binding): Angular пайвастагиро байни маълумот дар синфи компонент ва намоиш дар шаблон таъмин мекунад. Вай яктарафа (property binding, interpolation) ва дутарафа (ngModel) дорад.
- Директивҳо: Вайрон кардани рафтор ё намуди унсурҳои DOM. Маҳсулотҳои сохторӣ (
*ngIf,*ngFor) ва атрибутӣ (ngClass,ngStyle). - Хизматрасониҳо (Services): Синфҳо, ки мантиқро дар бар мегиранд ва метавонанд аз ҷониби чанд компонент истифода шаванд. Барои гирифтани маълумот, мантиқи бизнес ва ғайра истифода мешаванд.
- Вурудоти вобастагӣ (Dependency Injection): Механизми, ки Angular хизматрасониҳоро ба компонентҳо ё дигар хизматрасониҳо пешниҳод мекунад. Кодро гувоҳ ва тест карданро осон мекунад.
- Routing: Имкон медиҳад, ки байни намоишҳо (компонентҳо) дар барнома бе навсозии саҳифа ҳаракат кунед. Бо
RouterModuleва конфигуратсияи маршрутҳо муайян карда мешавад. - Ҳаёти компонент (Component Lifecycle): Силсилавии рӯйдодҳо, ки аз эҷод то нобуд кардани компонент рух медиҳад. Angular хуки (усулҳо) медиҳад, ки барои иҷрои амалҳо дар марҳилаҳои муайян амалӣ карда шаванд (
ngOnInit,ngOnDestroy). - Детексияи тағирот (Change Detection): Механизми, ки муайян мекунад, кай бояд намоиш (DOM) навсозӣ шавад, бар асоси тағирот дар маълумотҳои барнома. Angular зонаҳоро (
NgZone) барои пайгирии рӯйдодҳои асинхронӣ ва оғоз кардани автоматии детексияи тағирот истифода мебарад. - Шаблонҳо (Templates): HTML бо васеъкунии Angular барои пайваст кардани маълумот, директивҳо ва изразҳо.
- RxJS: Angular фаъолона китобхонаи RxJS-ро барои кор бо маълумоти асинхронӣ ва ҷараёнҳои рӯйдодҳо истифода мебарад.
Раванди кор дар сатҳи баланд:
- Боргирӣ: Браузер
index.html-ро бор мекунад. - Шурӯъ: Рӯйхати асосӣ, одатан дар
main.tsоғоз меёбад. - Bootstrapping:
@NgModuleбарои модулҳои асосӣ (одатанAppModule) бо ёрииplatform-browserбор карда мешавад. - Рендеринг: Angular компонентҳоро месозад ва аз ҷумлаи асосӣ оғоз мекунад.
- Бандии маълумот: Маълумот аз синфҳои компонент бо шаблонҳо пайваст карда мешавад.
- Детексияи тағирот: Angular тағиротро пайгирӣ мекунад ва намоишро навсозӣ мекунад.
- Routing: Трансфертҳо байни намоишҳо аз ҷониби рутер идора карда мешаванд.
// Намунаи компоненти содда
import { Component } from '@angular/core';
@Component({
selector: 'app-greet', // Номи теги барои истифода дар шаблон
template: `<p>{{ message }}</p>`, // Шаблони компоненти
styles: ['p { color: blue; }'] // Стилҳои компоненти
})
export class GreetComponent {
// Мантиқии компоненти
message = 'Салом аз Angular!';
}
// Намунаи истифодаи хизматрасонӣ бо DI
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root' // Хизматрасонӣ дар инжектори асосӣ дастрас аст
})
export class DataService {
getData(): string {
return 'Маълумот аз хизматрасонӣ';
}
}
// Дар компоненти, ки хизматрасониро истифода мебарад
import { Component, OnInit } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'app-show-data',
template: `<p>{{ serviceData }}</p>`,
})
export class ShowDataComponent implements OnInit {
serviceData: string = '';
constructor(private dataService: DataService) { // Вурудоти хизматрасонӣ
}
ngOnInit() {
this.serviceData = this.dataService.getData();
}
}
Angular TypeScript ва HTML шаблонҳоро ба JavaScript дар вақти сохтмон (AOT compilation) тарҷума мекунад, ки иҷроишро беҳтар мекунад.