AngularJS

AngularJS
Original author(s)Miško Hevery
Developer(s)Google
Initial releaseOctober 20, 2010; 14 years ago (2010-10-20)[1]
Stable release
1.8.3[2] Edit this on Wikidata / 7 April 2022; 2 years ago (7 April 2022)
RepositoryAngularJS Repository
Written inJavaScript
PlatformJavaScript engine
Size167 kB production
1.2 MB development
TypeWeb framework
LicenseMIT License
Websiteangularjs.org Edit this on Wikidata

AngularJS is a discontinued free and open-source JavaScript-based web framework for developing single-page applications. It was maintained mainly by Google and a community of individuals and corporations. It aimed to simplify both the development and the testing of such applications by providing a framework for client-side model–view–controller (MVC) and model–view–viewmodel (MVVM) architectures, along with components commonly used in web applications and progressive web applications.

AngularJS was used as the frontend of the MEAN stack, that consisted of MongoDB database, Express.js web application server framework, AngularJS itself (or Angular), and Node.js server runtime environment.

As of January 1, 2022, Google no longer updates AngularJS to fix security, browser compatibility, or jQuery issues.[3][4][5] The Angular team recommends upgrading to Angular (v2+) as the best path forward, but they also provided some other options.[6]

Overview

The AngularJS framework worked by first reading the HyperText Markup Language (HTML) page, which had additional custom HTML attributes embedded into it. Angular interpreted those attributes as directives to bind input or output parts of the page to a model that is represented by standard JavaScript variables. The values of those JavaScript variables could be manually set within the code or retrieved from static or dynamic JSON resources.

AngularJS was built on the belief that declarative programming should be used to create user interfaces and connect software components, while imperative programming was better suited to defining an application's business logic.[7] The framework adapted and extended traditional HTML to present dynamic content through two-way data-binding that allowed for the automatic synchronization of models and views. As a result, AngularJS de-emphasized explicit Document Object Model (DOM) manipulation with the goal of improving testability and performance.

AngularJS's design goals included:

  • to decouple DOM manipulation from application logic. The difficulty of this is dramatically affected by the way the code is structured.
  • to decouple the client side of an application from the server-side. This allows development work to progress in parallel and allows for reuse of both sides.
  • to provide structure for the journey of building an application: from designing the UI, through writing the business logic, to testing.

AngularJS implemented the MVC pattern to separate presentation, data, and logic components.[8] Using dependency injection, Angular brought traditionally server-side services, such as view-dependent controllers, to client-side web applications. Consequently, much of the burden on the server could be reduced.

Scope

AngularJS used the term "scope" in a manner akin to the fundamentals of computer science.

Scope in computer science describes when in the program a particular binding is valid. The ECMA-262 specification defines scope as: a lexical environment in which a Function object is executed in client-side web scripts;[9] akin to how scope is defined in lambda calculus.[10]

As a part of the "MVC" architecture, the scope forms the "Model", and all variables defined in the scope can be accessed by the "View" as well as the "Controller". The scope behaves as a glue and binds the "View" and the "Controller".

Bootstrap

The task performed by the AngularJS bootstrapper occurred in three phases[11] after the DOM has been loaded:

  1. Creation of a new Injector
  2. Compilation of the directives that decorate the DOM
  3. Linking of all directives to scope

AngularJS directives allowed the developer to specify custom and reusable HTML-like elements and attributes that define data bindings and the behavior of presentation components. Some of the most commonly used directives were:

ng-animate
A module provides support for JavaScript, CSS3 transition and CSS3 keyframe animation hooks within existing core and custom directives.
ng-app
Declares the root element of an AngularJS application, under which directives can be used to declare bindings and define behavior.
ng-aria
A module for accessibility support of common ARIA attributes.
ng-bind
Sets the text of a DOM element to the value of an expression. For example, <span ng-bind="name"></span> displays the value of 'name' inside the span element. Any change to the variable 'name' in the application's scope reflect instantly in the DOM.
ng-class
Conditionally apply a class, depending on the value of a Boolean expression.
ng-controller
Specifies a JavaScript controller class that evaluates HTML expressions.
ng-if
Basic if statement directive that instantiates the following element if the conditions are true. When the condition is false, the element is removed from the DOM. When true, a clone of the compiled element is re-inserted.
ng-init
Called once when the element is initialized.
ng-model
Similar to ng-bind, but establishes a two-way data binding between the view and the scope.
ng-model-options
Provides tuning for how model updates are done.
ng-repeat
Instantiate an element once per item from a collection.
ng-show & ng-hide
Conditionally show or hide an element, depending on the value of a Boolean expression. Show and hide is achieved by setting the CSS display style.
ng-switch
Conditionally instantiate one template from a set of choices, depending on the value of a selection expression.
ng-view
The base directive responsible for handling routes[12] that resolve JSON before rendering templates driven by specified controllers.

Since ng-* attributes are not valid in HTML specifications, data-ng-* can also be used as a prefix. For example, both ng-app and data-ng-app are valid in AngularJS.

Two-way data binding

AngularJS two-way data binding had its most notable feature, largely relieving the server backend of templating responsibilities. Instead, templates were rendered in plain HTML according to data contained in a scope defined in the model. The $scope service in Angular detected changes to the model section and modified HTML expressions in the view via a controller. Likewise, any alterations to the view were reflected in the model. This circumvented the need to actively manipulate the DOM and encouraged bootstrapping and rapid prototyping of web applications.[13] AngularJS detected changes in models by comparing the current values with values stored earlier in a process of dirty-checking, unlike Ember.js and Backbone.js that triggered listeners when the model values are changed.[14]

$watch
is an angular method used for dirty checking. Any variable or expression assigned in $scope automatically sets up a $watchExpression in angular. So assigning a variable to $scope or using directives like ng-if, ng-show, ng-repeat etc. all create watches in angular scope automatically. Angular maintains a simple array of $$watchers in the $scope objects
Different ways of defining a watcher in AngularJS.
  • explicitly $watch an attribute on $scope.
    $scope.$watch('person.username', validateUnique);
  • place an interpolation in your template (a watcher will be created for you on the current $scope).
  • ask a directive such as ng-model to define the watcher for you.
    <input ng-model="person.username" />
$digest
is angular method that is invoked internally by angularjs in frequent intervals. In $digest method, angular iterates over all $watches in its scope/child scopes.
$apply
is an angular method that internally invokes $digest. This method is used when you want to tell angular manually start dirty checking (execute all $watches)
$destroy
is both a method and event in angularjs. $destroy() method, removes a scope and all its children from dirty checking. $destroy event is called by angular whenever a $scope or $controller is destroyed.

Development history

AngularJS was originally developed in 2009 by Miško Hevery[15] at Brat Tech LLC[16] as the software behind an online JSON storage service, that would have been priced by the megabyte, for easy-to-make applications for the enterprise. This venture was located at the web domain "GetAngular.com",[16] and had a few subscribers, before the two decided to abandon the business idea and release Angular as an open-source library.

The 1.6 release added many of the concepts of Angular to AngularJS, including the concept of a component-based application architecture.[17] This release among others removed the Sandbox, which many developers believed provided additional security, despite numerous vulnerabilities that had been discovered that bypassed the sandbox.[18] The current (as of November 2023) stable release of AngularJS is 1.8.3[19]

In January 2018, a schedule was announced for phasing-out AngularJS: after releasing 1.7.0, the active development on AngularJS would continue until June 30, 2018. Afterwards, 1.7 was supported until December 31, 2021 as long-term support.[4][5]

Legacy browser support

Versions 1.3 and later of AngularJS did not support Internet Explorer 8 or earlier. While AngularJS 1.2 supported IE8, its team does not.[20][21]

Angular and AngularDart

Subsequent versions of AngularJS are simply called Angular.[22] Angular is an incompatible TypeScript-based rewrite of AngularJS. Angular 4 was announced on 13 December 2016, skipping 3 to avoid a confusion due to the misalignment of the router package's version which was already distributed as v3.3.0.[23]

AngularDart works on Dart, which is an object-oriented, class defined, single inheritance programming language using C style syntax, that is different from Angular JS (which uses JavaScript) and Angular 2/ Angular 4 (which uses TypeScript). Angular 4 released in March 2017, with the framework's version aligned with the version number of the router it used. Angular 5 was released on November 1, 2017.[24] Key improvements in Angular 5 include support for progressive Web apps, a build optimizer and improvements related to Material Design.[25] Angular 6 was released on 3 May 2018,[26] Angular 7 was released on 18 October 2018, and Angular 8 was released on May 28, 2019. Angular follows Semantic Versioning standards, with each major version number indicating potentially breaking changes. Angular has pledged to provide 6 months of active support for each major version followed by 12 months of long-term support. Major releases are bi-yearly with 1 to 3 minor releases for every major release.[27]

Angular Universal

A normal Angular application executes in the browser, while Angular Universal generates static application pages on the server through server-side rendering (SSR).[28]

Libraries

AngularJS Material

AngularJS Material[29][30] was a UI component library that implemented Material Design in AngularJS.[31] The library provided a set of reusable, well-tested, and accessible UI components. In January 2022, the library was closed, as announced on their official website.[32] The AngularJS Material library is a mature and stable product that is ready for production use and works only with AngularJS 1.x. The Angular Material library is available in the angular/material2 GitHub repository.

Chrome extension

In July 2012, the Angular team built an extension for the Google Chrome browser called Batarang,[33] that improved the debugging experience for web applications built with Angular. The extension aimed to allow for easy detection of performance bottlenecks and offered a GUI for debugging applications.[34] For a time during late 2014 and early 2015, the extension was not compatible with recent releases (after v1.2.x) of Angular.[35] The last update made to this extension was on April 4, 2017.

Performance

AngularJS set out the paradigm of a digest cycle. This cycle could be considered a loop, during which AngularJS checked if there were any changes to all the variables watched by all the $scopes. If $scope.myVar is defined in a controller and this variable was marked for watching, Angular would monitor the changes on myVar in each loop iteration.

This approach potentially led to slow rendering when AngularJS checked on too many variables in the $scope every cycle. Miško Hevery suggested keeping fewer than 2000 watchers on any page.[14]

See also

References

  1. ^ "Releases · angular/angular.js". GitHub. Retrieved April 9, 2021.
  2. ^ "Release 1.8.3". 7 April 2022. Retrieved 29 July 2022.
  3. ^ "AngularJS". docs.angularjs.org. Retrieved 2021-05-14.
  4. ^ a b "AngularJS". docs.angularjs.org. Retrieved April 9, 2021.
  5. ^ a b Darwin, Pete Bacon (27 July 2020). "Stable AngularJS and Long Term Support". Angular Blog. Retrieved April 9, 2021.
  6. ^ Techson, Mark (February 2, 2021). "Finding a Path Forward with AngularJs". Medium. Retrieved April 9, 2021.
  7. ^ "What Is Angular?". Retrieved 12 February 2013.
  8. ^ "AngularJS". docs.angularjs.org. Retrieved April 9, 2021.
  9. ^ "Annotated ECMAScript 5.1, Section 10.2 Lexical Environments". Retrieved 2015-01-03.
  10. ^ Barendregt, Henk; Barendsen, Erik (March 2000), Introduction to Lambda Calculus (PDF)
  11. ^ "Writing Directives". angularjs.org. November 28, 2012. Retrieved 2013-07-21.
  12. ^ "AngularJS". docs.angularjs.org. Retrieved April 9, 2021.
  13. ^ "5 Awesome AngularJS Features". Retrieved 13 February 2013.
  14. ^ a b Hevery, Misko. "Databinding in angularjs". Retrieved 2014-03-09.
  15. ^ "Hello World, <angular/> is here". Retrieved 2014-10-12.
  16. ^ a b "GetAngular". Angular / BRAT Tech. LLC. Archived from the original on 2010-04-13. Retrieved 2014-10-12.
  17. ^ "AngularJS: Developer Guide for v1.5.8: Components". Retrieved 2017-09-26.
  18. ^ "angular.js". GitHub. Retrieved 2017-09-26.
  19. ^ "Release v1.8.3 · angular/angular.js". GitHub. Retrieved November 29, 2023.
  20. ^ "Internet Explorer Compatibility". Angular JS 1.7.7 Developer Guide. Retrieved 12 Feb 2019. AngularJS 1.3 has dropped support for IE8. Read more about it on our blog. AngularJS 1.2 will continue to support IE8, but the core team does not plan to spend time addressing issues specific to IE8 or earlier.
  21. ^ Minar, Igor. "AngularJS 1.3: a new release approaches". AngularJS Blog. Archived from the original on 2014-10-13. Retrieved 2014-10-12.
  22. ^ "Introduction to Angular". Retrieved 2021-12-08.
  23. ^ "Ok... let me explain: it's going to be Angular 4.0". angularjs.blogspot.kr. Archived from the original on 2016-12-13. Retrieved 2016-12-14.
  24. ^ Fluin, Stephen (April 26, 2018). "Version 5.0.0 of Angular Now Available". Medium. Retrieved April 9, 2021.
  25. ^ Krill, Paul (September 18, 2017). "AngularJS 5 JavaScript framework delayed". InfoWorld. Retrieved April 9, 2021.
  26. ^ Fluin, Stephen (3 May 2018). "Version 6 of Angular Now Available – Angular Blog". Angular Blog. Retrieved 8 June 2018.
  27. ^ "Angular versioning and releases". angular.io. Retrieved 8 June 2018.
  28. ^ Pieszak, Mark (January 7, 2020). "Angular Universal & Server-side rendering Deep-Dive". Medium. Retrieved April 9, 2021.
  29. ^ "angular/material (GitHub)". GitHub. Retrieved 2020-12-24.
  30. ^ "AngularJS Material Documentation". Retrieved 2020-12-24.
  31. ^ Kotaru, V. Keerti (2016-08-25). Material Design Implementation with AngularJS: UI Component Framework. Apress. p. 4. ISBN 9781484221907.
  32. ^ "AngularJS Material". material.angularjs.org. Retrieved 2022-05-04.
  33. ^ "angular/angularjs-batarang (GitHub)". GitHub. Retrieved 2014-10-12.
  34. ^ Ford, Brian. "Introducing the AngularJS Batarang". AngularJS Blog. Archived from the original on 2014-10-13. Retrieved 2014-10-12.
  35. ^ "batarang Chrome extension for AngularJS appears broken". Stack Overflow.

Further reading

Read other articles:

Mandy MooreMandy Moore, 2011LahirAmanda Leigh Moore10 April 1984 (umur 39)Nashua, New Hampshire, Amerika SerikatPendidikanBishop Moore High SchoolPekerjaanPenyanyi Penulis Lagu Tahun aktif1993–presentSuami/istriRyan Adams ​ ​(m. 2009; c. 2016)​Taylor Goldsmith ​(m. 2018)​Anak2PenghargaanFull listKarier musikAsalLongwood, Florida, Amerika SerikatGenre Pop pop rock dance-pop folk-pop folk rock country Instr...

2002 single by Christina Aguilera BeautifulSingle by Christina Aguilerafrom the album Stripped B-sideDame lo que Yo Te DoyReleasedNovember 16, 2002 (2002-11-16)GenrePop[1]R&B[2]operatic pop[3]Length4:00LabelRCASongwriter(s)Linda PerryProducer(s)Linda PerryChristina Aguilera singles chronology Dirrty (2002) Beautiful (2002) Fighter (2003) Music videoBeautiful on YouTube Beautiful is a song recorded by American singer Christina Aguilera for her fourth ...

Pour un article plus général, voir Championnats du monde d'athlétisme. Saut en longueur aux championnats du monde d'athlétisme Dwight Phillips remporte quatre titres de champion du monde du saut en longueur, en 2003, 2005, 2009 et 2011.Généralités Sport AthlétismeSaut en longueur Organisateur(s) World Athletics Éditions 18e en 2022 Catégorie Championnats du monde Palmarès Tenant du titre Miltiádis Tedóglou (2023)Ivana Vuleta (2023) Plus titré(s) Iván Pedroso et Dwight Phillips ...

This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Culture of Saba island – news · newspapers · books · scholar · JSTOR (August 2023) (Learn how and when to remove this template message) Saba's culture bears the influence of its early settlers, among them the English, Scottish, Africans, and Dutch. Because Saba measures onl...

Huis van de Vijf Zintuigen Huis van de Vijf Zintuigen Locatie Locatie Kaatsheuvel Nederland Status en tijdlijn Huidig gebruik Entreegebouw Start bouw 1995 Bouw gereed 1995 Opening 1996 Bouwinfo Architect Ton van de Ven Eigenaar Efteling Portaal    Civiele techniek en bouwkunde Het Huis van de Vijf Zintuigen is het entreegebouw van attractiepark de Efteling. Het gebouw Het gebouw is zeer opvallend door de vijf grote punten waar het rieten dak uit bestaat. Dit dak is met 450...

This article is an orphan, as no other articles link to it. Please introduce links to this page from related articles; try the Find link tool for suggestions. (December 2023) This article or section is in a state of significant expansion or restructuring. You are welcome to assist in its construction by editing it as well. If this article or section has not been edited in several days, please remove this template.If you are the editor who added this template and you are actively editing, plea...

Sebuah kapak Kapak (atau kadang disebut dengan kampak) adalah sebuah alat yang terbuat dari logam, bermata yang diikat pada sebuah tangkai, umunnya dari kayu. Kapak merupakan salah satu alat manusia yang sudah sangat tua usianya, sama umurnya dengan saat manusia pertama kali membuat alat dari batu dan kayu. Zaman dahulu kapak dibuat dari batu pada zaman batu dan pada zaman besi lalu dibuat dari besi. Kapak sangat berguna dan penggunaannya cukup luas dimulai dari sebagai perkakas pemotong kayu...

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Xavier College South Australia – news · newspapers · books · scholar · JSTOR (November 2018) (Learn how and when to remove this template message) Catholic, co-educational school in Evanston, Gawler Belt & Two Wells, South Australia, AustraliaXavier Col...

Artículo principal: Torneo Finalización 2017 (Colombia) FinalLiga Águila 2017-II Millonarios obtuvo el título de la final capitalina.LocalizaciónPaís  ColombiaLugar Estadio Nemesio Camacho El Campín Bogotá, ColombiaDatos generalesTipo finalSuceso Final del Torneo Finalización de la Categoría Primera A.Participantes Millonarios Independiente Santa FeHistóricoFecha 13 de diciembre de 2017 (ida)17 de diciembre de 2017 (vuelta)Cronología Final del Torneo Apertura 2017 (Colom...

Gaelic games club in County Limerick, Ireland This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: Murroe / Boher GAA – news · newspapers · books · scholar · JSTOR (March 2008) (Learn how and when to remove this template message) Murroe / BoherMaigh Rua / BótharFounded:1887County:LimerickColours:Blue and GreenGrounds:Harty Park, Murroe and Boher GAA Pitch, ...

Indian gravy chicken dish prepared with butter Butter chickenButter chickenAlternative namesChicken makhani, murgh makhaniCourseCurryPlace of origin IndiaRegion or stateDelhi[1][2][3][4][5]Associated cuisineIndianCreated byKundan Lal Gujral and Kundan Lal JaggiMain ingredientsButter, tomatoes, chickenVariationsPaneer makhani, dal makhani Cookbook: Butter chicken  Media: Butter chicken Butter chicken, traditionally known as murgh makhani (p...

Papua Pegunungan La PagoProvinsi otonomi khususDari atas ke bawah, kiri ke kanan.: Puncak Trikora; Festival Budaya Lembah Baliem; Taman Wio Silimo Wamena; Membuat Noken; Bakar Batu (Barapen) di Baliem; Honai Suku Dani BenderaLambangMotto: Bangkit Bersama MembangunPetaNegara IndonesiaDasar hukum pendirianUU No. 16 Tahun 2022Tanggal25 Juli 2022Ibu kotaJayawijayaJumlah satuan pemerintahan Daftar Kabupaten: 8Kota: -Kecamatan: 252Kelurahan: 10Desa: 2.617 Pemerintahan • Gubern...

Ancient people of the Istrian peninsula Histri in the Iron Age, c. 5th century BC. The Histri were an ancient people inhabiting the Istrian Peninsula, to which they gave the name. Their territory stretched to the neighbouring Gulf of Trieste and bordered the Iapydes in the hinterland of Tarsatica.[1] The Histri formed a kingdom.[1][2] Description Histrian vase from Nesactium The tribe is classified in some sources as a Venetic tribe, with some ties with Illyrians.[...

Defunct bus company in New York City Jamaica BusesEx-Jamaica Bus #556 on MTA Bus's Q47 route in Jackson Heights.ParentGTJ Reit IncorporatedFounded1930Defunct2006Headquarters114-15 Guy R. Brewer BoulevardSouth Jamaica, NY 11434-1296 Jamaica Buses, Inc., also known as Jamaica Bus Lines[1] or the Jamaica Bus Company,[2] was a bus company in New York City, United States, operating local service in Queens and express service to Manhattan until January 30, 2006, when the MTA Bus Com...

Historic house in Indiana, United States United States historic placeGeorge Boxley CabinU.S. National Register of Historic Places George Boxley Cabin, January 2012Show map of IndianaShow map of the United StatesLocationPioneer Hill at First and Main Sts., Sheridan, IndianaCoordinates40°8′21″N 86°13′16″W / 40.13917°N 86.22111°W / 40.13917; -86.22111Arealess than one acreBuiltc. 1828 (1828)Built byBoxley, GeorgeArchitectural styleSingle pen log cabi...

Эту статью предлагается удалить.Пояснение причин и соответствующее обсуждение вы можете найти на странице Википедия:К удалению/12 июля 2021.Пока процесс обсуждения не завершён, статью можно попытаться улучшить, однако следует воздерживаться от переименований или немотив...

Human settlement in EnglandScapegoat HillView of the villageScapegoat HillLocation within West YorkshirePopulation1,246 OS grid referenceSE0884016430Metropolitan boroughKirkleesMetropolitan countyWest YorkshireRegionYorkshire and the HumberCountryEnglandSovereign stateUnited KingdomPost townHUDDERSFIELDPostcode districtHD7Dialling code01484PoliceWest YorkshireFireWest YorkshireAmbulanceYorkshire UK ParliamentColne Valley List of places UK England Y...

Pakistani physicist (1903–1988) Rafi Muhammad ChaudhryBornRao Rafi MuhammadJuly 1903 (1903-07)Kahnaur, Rohtak district, East Punjab British Indian Empire (now India)Died4 December 1988(1988-12-04) (aged 85)Lahore, Punjab, PakistanAlma materAligarh Muslim UniversityUniversity of CambridgeOccupationPhysicistKnown forGamma and beta decay, and his work in atomic and nuclear physics in Pakistanfission energy researchAwardsSitara-i-Khidmat (1954)Sitara-i-Imtiaz (1965)Nishan-e-...

This article is part of a series on theLiberal Democratic Party (Japan) History1950s 1955 System Soviet–Japanese JointDeclaration of 1956 U.S.-Japan Security Treaty 1960s Three Non-Nuclear Principles 1970s Lockheed bribery scandals Treaty of Peace and Friendship between Japan and China 1980s Recruit scandal Japanese asset price bubble 1990s Recruit scandal Lost Decades 2000s 2001 Central Government Reform Postal service privatization 2010s Abenomics Moritomo Gakuen scandal 2020s Main ideolo...

For the film, see Kalyanamam Kalyanam (film). Indian TV series or programme Kalyanamam KalyanamGenreSoap opera FamilyWritten byJama Piraven RajDirected by Bramma.G.Dev (Episode 1-170) & (241-307 R.Ganesh (Episode 171-240) Starring Sreethu Nair Tejas Gowda Subramanian Gopalakrishnan Srithika Niharika Rao Sai Latha T. S. B. K. Moulee R. Sundarrajan Theme music composerN. KannanCountry of originIndiaOriginal languageTamilNo. of seasons2No. of episodes500ProductionProducers V.K.Amirthara...