Angular js, the superheroic framework for coding less and enjoy more.

Angular JS framework logo

Angularjs is a JavaScript framework, Super-powered by Google, which allows development easily from small to very powerful applications, with less coding. This framework has a very little boilerplate compared to other frameworks like backbonejs, knockoutjs, or meteorjs, and has a very little bootstrapping. You can make, if desired, a simple client application without using any JavaScript, only HTML attributes.

One of many advantages of using angular is that this is an all in one package, this has templates, models, controller, modules, a router, a jQuery lite, a kind of RequireJS with which controller or modules use only the necessary, and its default directives, filters, and services. Also, it is fully extensible and works well with other libraries.

Indisputably the functionality that you can take more advantage, and you will love, is its Two-Way binding. When you create models in the view this is automatically created in the controller and vice versa, and if the model changes in the view this automatically changes in the controller and vice versa. This is known as the Model-View-View Model (MVVM) design pattern.

Angular is very flexible, you can use MVVM, or use another design pattenr as Model-View-Controller (MVC), or Model-View-Whatever (MVW), but it will always have this advantage, the Two-Way binding. http://docs.angularjs.org/guide/dev_guide.templates.databinding

Client Side App:

When you create an application using angular, this app is 100% client side controlled, this means that all images, HTML templates, css, or js files, are only downloaded once. This is another advantage, because if the user hit a link, this doesn´t reload all the page, with the images, css, and js files, this only downloads the HTML template required for the new view and the data that is needed. This makes the applications faster, and saves a lot of requests to the server.

All the routes in the app have an URL that can be configured in the routerProvider. This allows articles or views to be shared easily on social networks or any other site on the web.

Restful API:

in order to communicate with the server, angular has a great module called ngResource. This module manages the http request and responses, and this is transparent to the programmer, the programmer only needs to put the URL to get the model on the server, and this creates a JavaScript object with a Create-Read-Update-Delete (CRUD) functionality. This is an ORM but in the client-side, this is awesome. http://docs.angularjs.org/api/ngResource.$resource