Middle
როგორ მუშაობს Angular?
sobes.tech AI
პასუხი AI-სგან
ანგულარი მუშაობს როგორც ფრემვორკი ერთგვერდიანი აპლიკაციების (SPA) შექმნისთვის. მისი ძირითადი კომპონენტები და პრინციპები:
- მოდულურობა: აპლიკაციები აგებულია მოდულებისგან.
@NgModuleგანსაზღვრავს, რომელი კომპონენტები, სერვისები და სხვა ელემენტები ეკუთვნის მოდულს. - კომპონენტები: Angular-ის აპლიკაციების ძირითადი მშენებლობის ბლოკები. თითოეული კომპონენტი შედგება შაბლონიდან (HTML), TypeScript კლასიდან (ლოგიკა) და სტილებიდან (CSS).
Componentდეკორატორი აერთიანებს მათ. - მონაცემთა ბაიდინგი (Data Binding): Angular უზრუნველყოფს მონაცემებს შორის კავშირს კლასის და შაბლონის შორის. არსებობს ერთმხრივი (property binding, interpolation) და ორმხრივი მონაცემთა ბაიდინგი (ngModel).
- დირექტივები: ცვლის DOM ელემენტების ქცევას ან გარეგნობას. არსებობს სტრუქტურული (
*ngIf,*ngFor) და ატრიბუტული (ngClass,ngStyle). - სერვისები: კლასები, რომლებიც შეიცავს ლოგიკას, რომელიც შეიძლება გამოყენებულ იქნას რამდენიმე კომპონენტში. გამოიყენება მონაცემების მიღებისთვის, ბიზნეს-ლოგიკისთვის და ა.შ.
- დამოკიდებულების ინექცია (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-ში. - ბუტსტრაპი:
@NgModuleიტვირთება ძირითადი მოდულიდან (AppModule)platform-browser-ის საშუალებით. - რენდერინგი: Angular ქმნის და რენდერებს კომპონენტებს, დაწყებული ძირითადი კომპონენტით.
- მონაცემთა ბაიდინგი: მონაცემები კომპონენტის კლასებიდან დაკავშირებულია შაბლონებთან.
- ცვლილებების გამოვლენა: Angular აკვირდება მონაცემების ცვლილებებს და განაახლებს წარმოდგენას.
- რუტინგი: გადასვლები წარმოდგენებს შორის ხორციელდება რუტერის საშუალებით.
// მარტივი კომპონენტის მაგალითი
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 კომპილაცია, როგორც წესი, დაყენებულია), რაც ზრდის პროდუქტიულობას.