Angular JS – my quick thoughts !


    What is AngularJS
    AngularJS is a MVC framework that defines numerous concepts to properly organize your web application. Your application is defined with modules that can depend from one to the others. It enhances HTML by attaching directives to your pages with new attributes or tags and expressions in order to define very powerful templates directly in your HTML. It also encapsulates the behavior of your application in controllers which are instantiated thanks to dependency injection. Thanks to the use of dependency injection, AngularJS helps you structure and test your Javascript code very easily. Finally, utility code can easily be factorized into services that can be injected in your controllers. 
    Philosophy
    1. Angular is what HTML could have been if it had been designed for applications.
    2. HTML is a great declarative language for static documents. It does not contain much in the way of creating application.
    3. Building web-applications is an exercise in what do I have to do, so that I trick the browser in to do what I want.
    4. That's why we have frameworks - set of utility functions and libraries for DOM manipulation.
    5. Angular takes another approach.
    6. Angular teaches the browser new syntax.
    Comparison with static HTML
    clip_image001
    Dynamic HTML
    clip_image002
    Key features:
    1. Model View Controller architecture
    2. A well known and proven architecture
    3. Declarative two way data binding
    4. Automatically synchronizes values between Model and View
    5. Dynamic templates
    6. Makes it very easy to update the user interface
    7. Dependency injections
    8. Code dependencies are automatically injected where needed
    9. Extends HTML with directives
    10. Lots of powerful standard directives or create your own
    11. Build with testing in mind
    12. Makes it much easier to unit test different parts

    Architecture
    clip_image003
    clip_image004
    General References & useful resources
    1. http://todomvc.com/
    2. http://angularjs.org/
    3. http://pivotal.github.io/jasmine/
    4. http://yeoman.io/
    5. http://karma-runner.github.io/0.8/index.html
    6. http://rmurphey.com/blog/2012/04/12/a-baseline-for-frontend-developers/
    7. https://github.com/cer/polyglot-restaurant
    8. http://stephanebegaudeau.tumblr.com/post/48776908163/everything-you-need-to-understand-to-start-with