AngularJS Design Goals
Eliminating the DOM manipulation. DOM (Document object model) is a cross-platform and language independent convention which is used for interacting with the objects in HTML. The browser converts HTML in your web page into a tree based on nesting, so if you want to change any HTML you need to change the DOM elements, this is what is known as DOM manipulation. AngularJS eliminates it through data binding by updating the view whenever the model changes and updating the model whenever the view changes. With the help of AngularJS, you can even express the behaviour behind the DOM elements (called controller) in a readable form without any boilerplate of updating DOM.
Decoupling the client side of an application from the server side. This enables the development work to progress in parallel.
Providing a well defined structure to building of an App. From UI designing phase to testing phase.
Bringing the service side services such as view dependent controllers to the client side web app. This drastically reduces the burden on the server.
Features of AngularJS
Divides your web application into small, usable, functional components which can be integrated with other web applications.
They extend the HTML vocabulary such that the HTML elements have new behaviours and attributes.
They are used to show the information from the model and the controller.
These support filters to format data before displaying it.
Saves you from writing huge amounts of boilerplate code.
It acts as a context for evaluating expressions. It acts as glue between controller and view.
MVC (Model, View and Controller)
AngularJS is a MVC framework and implements MVC pattern to separate presentation, data and logic components.
The model represents the data used by your App.
The view presents the models data to the end user.
The controller defines the behaviour of your App. It connects the right models to the right views.
This feature enables you to develop a modern HTML5 form which is quite interactive and responsive.
They are used to format data before displaying it to the user.
They are reusable objects that share the code across your App.
This is one of the built-in services offered by AngularJS. You can also create your own services.
It helps you divide your app into multiple views and bind different views to controllers.
Angular JS comes with a built-in testing feature. Hence, it becomes very easy for you to test your applications.