AngularJS | |
---|---|
Sorts | ramverk , JavaScript- bibliotek och funktionsbibliotek |
Utvecklaren | |
Skrivet i | JavaScript [1] |
Första upplagan | 20 oktober 2010 |
Hårdvaruplattform | webbplattform |
senaste versionen | |
Licens | MIT-licens [4] [5] |
Hemsida | angularjs.org |
Mediafiler på Wikimedia Commons |
AngularJS är ett JavaScript- ramverk med öppen källkod . Designad för att utveckla ensidiga applikationer [6] . Dess mål är att utöka webbläsarapplikationer baserade på MVC- mönstret, samt att förenkla testning och utveckling.
Ramverket fungerar med HTML som innehåller ytterligare anpassade attribut, som beskrivs av direktiv, och binder in- eller utdata från sidområdet till en modell som är vanliga JavaScript-variabler. Värdena för dessa variabler ställs in manuellt eller hämtas från statisk eller dynamisk JSON-data.
AngularJS utvecklades 2009 av Misko Heveri och Adam Abrons på Brat Tech LLC som programvaran bakom en megabyte JSON -lagringstjänst för att underlätta utveckling av företagsapplikationer. Tjänsten var värd på "GetAngular.com"-domänen och hade flera registrerade användare innan de bestämde sig för att överge affärsidén och släppa Angular som ett bibliotek med öppen källkod.
Abrons lämnade projektet, men Heveri, som arbetar på Google , fortsatte att utveckla och underhålla biblioteket tillsammans med andra Googlers Igor Minar och Voita Jin.
I mars 2014 tillkännagavs utvecklingen av AngularJS 2.0 [7] . Den nya versionen skrevs från grunden i TypeScript och skilde sig mycket från den tidigare, så det beslutades senare att utveckla den som ett separat ramverk som heter Angular . Angular 2 släpptes den 15 september 2016 [8] , medan den första versionen fortsatte att utvecklas separat som AngularJS.
I april 2022, med lanseringen av den senaste versionen 1.8.3, avbröts stödet för AngularJS officiellt. [9]
AngularJS är designad med tron att deklarativ programmering är bäst för att bygga användargränssnitt och beskriva programvarukomponenter [10] , medan imperativ programmering är utmärkt för att beskriva affärslogik [11] . Ramverket anpassar och utökar traditionell HTML för att tillhandahålla tvåvägsdatabindning för dynamiskt innehåll, vilket gör att modell och vy automatiskt synkroniseras. Som ett resultat minskar AngularJS rollen av DOM-manipulation och förbättrar testbarheten.
Angular följer MVC-designmönstret och uppmuntrar lös koppling mellan presentation, data och komponentlogik. Med hjälp av beroendeinjektion tar Angular klassiska server-side-tjänster som vyberoende kontroller till klientsidan. Följaktligen minskar belastningen på servern och webbapplikationen blir lättare.
Med AngularJS-direktiv kan du skapa anpassade HTML-taggar och attribut för att lägga till beteende till vissa element. [fjorton]
ng-app Deklarerar elementet som rotelement för applikationen. [femton] ng-binda Ersätter automatiskt texten i ett HTML-element med värdet för det skickade uttrycket. ng-modell Samma som ng-bind, ger endast tvåvägs databindning. [16] Innehållet i elementet kommer att ändras - vinkel kommer också att ändra värdet på modellen. Modellens värde kommer att ändras - vinkel kommer att ändra texten inuti elementet. ng-klass Definierar klasser för dynamisk laddning. ng-kontroller Definierar en JavaScript-kontroller för att utvärdera HTML-uttryck enligt MVC. [17] ng-upprepa Skapar en DOM-instans för varje element i samlingen. [arton] ng-show och ng-hide Visar eller döljer elementet, beroende på värdet på det booleska uttrycket. ng-switch Skapar en instans av en mall från en uppsättning alternativ, beroende på uttryckets värde. ng-vy Basdirektivet ansvarar för att hantera rutter [19] som accepterar JSON innan mallar renderas som drivs av de angivna kontrollerna. ng-om Tar bort eller skapar en del av DOM-trädet beroende på värdet på ett uttryck. Om värdet på uttrycket som tilldelats ngIf är falskt tas elementet bort från DOM, annars infogas det nyklonade elementet i DOM. [tjugo]Det är också möjligt att skapa anpassade direktiv, inklusive att använda mallar i skripttaggen. [21] [22]
Tvåvägsdatabindning i AngularJS är den mest anmärkningsvärda egenskapen: den minskar mängden kod genom att befria servern från att hantera mallar. Istället renderas mallar som vanlig HTML, fyllda med data som finns inom ett omfång som definieras i modellen. Tjänsten $scopei Angular bevakar förändringar i modellen och ändrar HTML-uttrycksdelen av vyn genom kontrollern. Alla ändringar av vyn återspeglas också i modellen. Detta kringgår behovet av DOM-manipulation och underlättar webbapplikationsinitiering och prototyper [23] .
I juli 2012 släppte Angular-teamet ett plugin för webbläsaren Google Chrome som heter Batarang [24] som gör det lättare att felsöka webbapplikationer byggda på Angular. Tillägget gör det enkelt att upptäcka flaskhalsar och erbjuder ett grafiskt gränssnitt för felsökning av applikationer [25] .
Backbone.js , ett JavaScript - bibliotek baserat på designmönstret Model-View-Presenter (MVP), har liknande möjligheter för att utveckla webbapplikationer med stöd för ett RESTful JSON -gränssnitt. Backbone är ett mycket lätt bibliotek (komprimerat och gzip-komprimerat i storlek ~6,3 KB), men det kräver att Underscore.js- biblioteket fungerar , och för att stödja REST API och arbeta med DOM-element, rekommenderas det att inkludera en jQuery- som bibliotek: jQuery eller Zepto. Backbone.js skapades av Jeremy Ashkenas , som också är känd som skaparen av CoffeeScript .
Men det finns också betydande skillnader:
Databindning Den mest framträdande egenskapen som skiljer biblioteken åt är hur modellen och vyn är synkroniserade. Medan AngularJS stöder tvåvägsdatabindning, förlitar sig Backbone.js starkt på boilerplate-kod för att binda modell och vy [26] . RESTEN Backbone.js stöder RESTful backend väl. Det är också väldigt enkelt att arbeta med RESTful API:er i AngularJS med hjälp av tjänsten $resource. Samtidigt har AngularJS en mer flexibel $http-tjänst som ansluter till fjärrservrar med hjälp av webbläsarens XMLHttpRequest -objekt eller via JSONP [27] . Mallar AngularJS använder en kombination av anpassade HTML-taggar och uttryck som en mall [28] . Backbone.js använder olika mallmotorer som Underscore.js [26] .JavaScript | |
---|---|
Idéer | |
Kompilatorer | |
Motorer | |
Bibliotek och ramar | |
Redaktörer | |
Verktyg |
|
Relaterade tekniker | |
människor | |
Kategori |
ECMAScript | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dialekter |
| ||||||||||||
Motorer ( jämförelse ) |
| ||||||||||||
Ramar , bibliotek |
| ||||||||||||
människor | |||||||||||||
Övrig |
|