AngularJS
Angular is a client-side MVW JavaScript framework for writing compelling web applications. It's built and maintained by Google and offers a futuristic spin on the web and its upcoming features and standards.
MVW stands for Model-View-Whatever, which gives us flexibility over design patterns when developing applications. We might choose an MVC (Model-View-Controller) or MVVM (Model-View-ViewModel) approach.
AngularJS promotes itself as a framework for enhancing HTML, it brings concepts from various programming languages, both JavaScript and server-side languages and makes HTML the dynamic language too. This means we get a fully data-driven approach to developing applications without needing to refresh Models, update the DOM and other time-consuming tasks such as browser bug fixes and inconsistencies. We focus on the data, and the data takes care of our HTML, leaving us to programming our application.
HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web-applications. AngularJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop.
Engineering concepts in JavaScript frameworks
AngularJS takes a different stance on how it delivers data-binding and other engineering concepts than frameworks such as Backbone.js and Ember.js and Node.js. We stick with the HTML we already know and love, letting Angular hijack it and enhances it. Angular keeps the DOM updated with any Model changes, which live in pure JavaScript Objects for data-binding purposes. Once a Model value is updated, Angular updates its Objects which become a source of truth for the application's state.