Angular

Angular (tuntud ka kui angular 2+) on TypeScriptis kirjutatud avatud lähtekoodil põhinev veebirakenduste raamistik. Angulari arendajateks on Angulari enda meeskond Googlis ja muud arendajad erafirmadest ja ka erainimesed. Angular on AngularJSi järglane.

Erinevused AngularJS'ist 
Angular on AngularJS'i täielik ümberehitus. Suurimad erinevused Angulari ja AngularJSi vahel on järgnevad:

 Angular on  kirjutatud TypeScripti jaoks. TypeScript on edasiarendus Javascriptist ja on seetõttu ka sellga tagupridi ühilduv. TypeScriptis on kasutusel staatiline tüüpimine, ehk programmi õigsust kontrollitakse enne selle kompileerimist. See vähendab testimise vajadust ja arendusaega. TypeScript on rangem tüüpimise poolest, kuid mugavam ja kui JavaScript pikemas perspektiivis, hõlmates rohkem mugavusi suuremate projektide arenduseks. Objektorienteeritud programmeerimisele mõeldud ehitus ja asünkroonsuse tugi on suurte ja modulaarsete veebilehtede loomisel kasulikud.
 Angluaril ei ole skoopi. Selle asemel on hierarhiline lähenemine kus muutujad on pärandatud edasi. Eesmärk on luua rohkem objektorienteeritud süsteem kus koodi kasutatakse uuesti koos sisemiste muutujatega.
 Suur osa AngularJSi tuumast on Angularis jaotatud lahti eraldi mooduliteks. Nende moodulite eeliseks on modulaarsus. Väiksemad lehed ei pea laadima nii palju asju tuumas ja on seeläbi kiiremad. Sellega kaasneb ka dünaamiline laadimine, ehk lehed laetakse mällu ainult siis kui neid on vahetult vaja. See vähendab algseks laadimiseks vajaminevat aega.

Arhitektuur 
Angulari raamistik on loodud dünaamiliste üheleheküljeliste veebilehtede ehitamiseks. Angular alustala on component ehk komponent, mis lehe funktsionaalsuse ja loogiga DOM-iga. Igal Angular projektil on vähemalt üks komponent milleks on root ehk juur komponent. Selle sidumise jaoks on fail, kus asub selle komponendi view-i kontrolliv template ja selle template-i käitumist kontrolliv loogika.

Eelneva süsteemi ära tundmiseks ja ülesehituseks kasutatakse metadatat, ehk metaandmeid. Need on koodi osad mis annavad Angulari koodi kompileerijale teada mis struktuuriga on tegemist.

Lisaks kasutavad komponentid veel service-eid. Service on koodi osa mis ei ole seotud mitte ühegi view-ga otseselt, vaid neid saab lisada teistesse komponentitesse neid inject-ides. Service kui struktuur aitab ka muuta Angularli rohkem objektorienteerituks.

Komponendid ja service-id on pakendatud kokku module-iteks ehk mooduliteks. Moodul on nagu pakend mille sees on lehel samas kohas paiknevad elemendid, samaks kasutuseks vajalik loogika või samu väliseid teeke kasutav kood. Igal Angulari veebilehel on oma alus moodul, milleks on root, ehk juur, moodul. Läbi selle alustab rakendus oma tööd ja seal defineeritakse ära tööks vajalikud järgnevad moodulid. Moodulid saab ka importida teistesse moodulitesse. Nii on Angularis kasutusel objekt orienteeritud struktuur, kus enkapsuleeritud moodulid kutsuvad välja üksteist.

Routing on viis kuidas Angular proovib kasutaja kogemust lehel teha kiiremaks ilma tema märkamata. Routing on mingi view muutmine, kui kasutaja seda nõuab, muutes URL-i. See toimub läbi veebilehitseja lehe muutmise töö muutmise. See töötab igal viisil nagu alamlehele minemine veebilehitsejas, aga on kiirem, sest ei laeta iga kord uut lehte, vaid lihtsalt muudetakse view ja seda tehes DOM.

Routingule saab rakendada ka kasutaja kontrolle. Kui uus veebiaadressi nõue tuleb rountingusse, siis Angularlis on olemas valvurid ehk guard-id. Neid saab kasutada tuues sisse Routing moodul, ja lasevad mugavalt implementeerida kasutaja õiguseid.

Versioonide ajalugu

Nimetamine 
Algselt kutsuti seda ümberkirjutust Angular neljaks kui see 2016. aastal välja kuulutati. Peale seda otsustati kutsuda Angular 1.x versioone angularJs ja kõik alates Angular 2.0 saati lihtsalt Angulariks.

Angular 3 
Kolm jäeti vahele, sest oleks tekitanud segadust juba varem avaldatud ruutimis pakettiga mis oli kolmanda versiooni peal.

Angular 4 
Angular 4 avaldati 2017 aasta märtsis. See oli tagurpidi ühilduv Angular kahega ja ei olnud sellest väga erinev.

 Optimeeringud vähendasid angulari poolt genereeritud koodi suurust enamasti 60% võrra. Lisaks kompileerimine oli kiirem ja vigu oli vähem.

 Lisati *ngIf ja *ngFor notatsioon, mis lubab lihtsalt kontrollida mingit konditsiooni.
 Ehitati angular.io lehekülg, mis tänapäevani on Angulari dokumentatsiooni ja näidiste ametlik leht.
 Animatsioonid tõsteti tuumast välja. Animatsioonide väljalülitus võimaldati.
 Lisati HttpClient, mis lubab kergemini teha HTTP kutseid.

Angular 5 

 Avaldatud 2017 märtsis.

 Lisati toetus Angular Materialile.

Angular 6 

 Avaldatud 2019 mais.

 Lisati käsurea liides mis lubab käsurealt projetide ja failide malle ehitada.
 Lisatud ng update ja ng add tugi.
 Suurendati Angular Materialsi tunduvalt

Angular 7 

 Avaldatud 2018 oktoober.
 Lisati virtuaalne kerimine, mis laeb ainult pilte mis on parajasti ekraanil. See lubab teha väga pikku keritavaid liste, ilma et leht muutuks aeglasemaks.
 Lisati lohistamine ja lahti laskmine.
 Lisati uusi Materials ja käsurea kasutusi.
 Mitu partner projekti tehti kasutatavaks nagu AngularFire, AngularConsole ja StackBlitz.

Angular 8 

 Avaldatud 2019 mais.

 Lisati diferentsiaalne lehtede laadimine(differential loading), mis tähendab, et olenevalt veebibrauserist laetakse uuem või vanem  JavaScripti versioon. See teeb lehtede laadimise kiiremaks uuemates veebi brauserites.
 Lisati dünaamiline teekide importimine laiskadele lehtedele.
 Alustati Ivy väljalaskega.

Angular 9 

 Avaldatud 2020 veebruaris.
 Ehitati uus kompileerimis ja tööaja jooksutaja Ivy. Ivy pakub lisaks sadade pisivigade parandusele veel väiksemaid faili suurusi arenduse ajal, kiiremat testimist, kiiremat vigade parandamist, paremat CSS stiili ja klassi ühilduvust, paremat tüübi kontrolli ja vähem vigu ehitusel.
 Lisati Youtube ja Google Mapsi komponendid, mis eemaldavad vajaduse kasutada nende väliseid rakendusliideseid.

Angular 10 

 Avaldatud 2020 juunis.
 Lisati uus Materialsi aja valija.
 TypeScripti uuendused ja vanade brauserite toetuste eemaldamine.

Angular 11 

 Avaldatud 2020 novembris.
 Fontide automaatne sisse laadimine, mis optimeerib kompileerimist.
 Üheksandas versioonis lisatud testimise uuendused said veel kasutusi juurde.
 Vajalike teekide importimine tehti 2 kuni 4 korda kiiremaks.
 Kiirem kompileerimine TypeScript neljaga.

Viited 

Tarkvararaamistikud