Tuesday, October 29, 2013

AngularJS: Introduction And Hello World Example

angular-js-logo
AngularJS, a JavaScript framework developed by a Googler and supported by Google has became quite a buzz word in past few months. More and more developers are using it and thus the community has grown significantly. Not only they love it, but they cant stop praising it :)
The reason is very simple. AngularJS rocks \m/ !! :D
If you come from a jQuery background and try to learn Angular, you would be amazed by this framework. How much you can do with few lines of code in Angular is mind boggling. We remember jQuery did the same when it was first released back in 2006. Developers used to write hundreds if not thousands of lines of code in pure javascript just to make the damn works with different browsers. jQuery changed that paradigm with selectors, custom events, animations etc.
But as web grew, so did the web technologies. Browsers are faster and faster day by day. It just dint make any sense to render a full HTML page on server side as browser can do the same. With Ajax picking up the pace it makes more sense to render UI of webapp dynamically. A new wave of Single Page Applications (SPA) started which lead to development of many front-end frameworks like Backbone, Knockout, Ember, Angular.
Coming back to AngularJS, I wanted to start a series of articles which describe Angular in plain vanilla fashion. Any one with basic Javascript, HTML background can start working in AngularJS without any hassle.
Let us dive into the world of AngularJS and see what it is.

Introduction to AngularJS

AngularJS as it says is a Superheroic JavaScript MVW framework. It assists with running single-page applications. Its goal is to augment browser-based applications with model–view–controller (MVC) capability, in an effort to make both development and testing easier.
AngularJS takes declarative programming to whole new level. It adapts and extends traditional HTML to better serve dynamic content through two-way data-binding that allows for the automatic synchronization of models and views.

MVW – Model View Whatever

There are many software architecture pattern which separates the representation of information from the user’s interaction with it. The central ideas behind these patterns are code reusability and separation of concerns. The most famous pattern that is used widely today is MVC or Model-View-Controller. Similar to MVC, there is another pattern called MVP or Model-View-Presenter. The MVP is based on MVC and the presenter assumes the functionality of the “middle-man” (played by the controller in MVC). In MVP, all presentation logic is pushed to the presenter. Eventually, the model becomes strictly a domain model. And then there are other patterns such as MVVM or Model-View-View-Model.
Angular doesn’t care actually what software architecture pattern you want to use in your app. And thus the pattern MVW or Model-View-Whatever. A basic concept of MVW is that all definitions are associated with a named Module. Modules can then be aggregated to form complete web applications. Modules can depend on one another, so that including a single Module in your WebApplication may bring along additional functionality on which that Module depends. Angular JS provides you with rich set of APIs to define these modules and linked them together with dependency injection. We will see this in great detail in next few articles.

Hello World, AngularJS

Before we get into any theory, let us get our hands dirty with some actual Angular code. That way would learn a great deal of whats happening.
In order to write a hello world application in Angular, all we have to do is it include Angular JS javascript in our HTML document.
<script type="text/javascript"
        src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
And that’s pretty much it. Now define your HTML page like below.
<html ng-app>
<head>
    <title>Hello World, AngularJS - ViralPatel.net</title>
    <script type="text/javascript"
        src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
 
</head>
<body>
     
    Write some text in textbox:
    <input type="text" ng-model="sometext" />
 
    <h1>Hello {{ sometext }}</h1>
     
</body>
</html>
Online Demo

If you want to change and play around with code use this JSFiddle: http://jsfiddle.net/viralpatel/vFcZ7/
Just write some text in above demo and see how the value after “Hello” changes.
Note that we didn’t write a single line of JavaScript and still this example works like a charm! Let us go through the demo step by step. There are some Angular related tags we put in our HTML document.

ng-app

First thing that we notice is an attribute ng-app within  tag. This attribute tells the Angular to be active in this portion of the page. So in our case entire document. If you want to enable Angular only at specific location in your webpage then you can define ng-app attribute to any DIV or other tag.
In case you are building app that also works with IE7, add id=”ngapp”. For example:
<html ng-app id="ng-app">
If you choose to use the old style directive syntax ng: then include xml-namespace in html to make IE happy.
<html xmlns:ng="http://angularjs.org">

ng-model and Two way data binding

We define attribute ng-model in textbox as ng-model=”sometext”. ng-model binds the state of textbox with model value. In our case we define a model sometext. This model value is bound with the value of textbox using ng-model attribute. Thus when the textbox value changes, Angular automatically changes the model sometext with this value. This is called Two way data binding. Similarly, if we change the model value than Angular will change the value of textbox. Two way data binding is the core of Angular’s magical spell. It just works. You’ll get to know about it more once we start adding complexity in our application.
AngularJS two-way data binding is its most notable feature and reduces the amount of code written by relieving the server backend from templating responsibilities.

{{ sometext }}

Note how we wrap our model value in double curly braces. This tell Angular to bind the value of modelsometext in place of {{ sometext }}.
Thus any change in sometext model value changes the text inside

tag.

ng-show / ng-hide

Now lets further modify our demo and add one more Angular attribute ng-show. In below code, we added attribute ng-show=”sometext” to

tag.

<script type="text/javascript"
        src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
And that’s pretty much it. Now define your HTML page like below.
<html ng-app>
<head>
    <title>Hello World, AngularJS - ViralPatel.net</title>
    <script type="text/javascript"
        src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
 
</head>
<body>
     
    Write some text in textbox:
    <input type="text" ng-model="sometext" />
 
    <h1 ng-show="sometext">Hello {{ sometext }}</h1>
     
</body>
</html>
Online Demo
If you want to change and play around with code use this JSFiddle: http://jsfiddle.net/viralpatel/ppgsS/
In this demo, the text Hello does not appear unless we type anything in textbox. We added just one small attribute to

tag and see how the functionality changed!.

ng-show attribute conditionally show an element, depending on the value of a boolean expression. Similar to ng-show you can also use ng-hide, which exactly does opposite of ng-show.
Note that until now we have not written any JavaScript code at all. Still our application became so dynamic.

AngularJS Filters

AngularJS provides powerful mechanism to modify the data on the go using Filters. Filters typically transform the data to a new data type, formatting the data in the process. The general syntax for using filter is:
{{ expression | filter }}
You can use more than filter on an expression by chaining them like:
{{ expression | filter1 | filter2 }}
AngularJS by default provide few filters that we can use in our app. It is also possible to define your own custom filters. For now we will just check filters that Angular provide with framework.

Filter uppercase and lowercase

As its name suggest, this filter convert the expression into uppercase letters. Lets check a quick demo. Lets modify few lines from our above example and use uppercase filter.
<html ng-app>
<head>
    <title>Hello World, AngularJS - ViralPatel.net</title>
    <script type="text/javascript"
        src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
  
</head>
<body>
      
    Write some text in textbox:
    <input type="text" ng-model="sometext" />
  
    <h1>Hello {{ sometext }}</h1>
 
    <h4>Uppercase: {{ sometext | uppercase }}</h4>
    <h4>Lowercase: {{ sometext | lowercase }}</h4>
      
</body>
</html>
Online Demo
If you want to change and play around with code use this JSFiddle: http://jsfiddle.net/viralpatel/nZ5sH/
Notice when you type in the textbox, the value is converted to upper and lower case depending on the filter we used.
Similarly, Angular provides some more filters like:

date

Usage:
{{ date_expression | date[:format] }}
Formats date to a string based on the requested format. Read Angular documentation to know more about format.

number

Usage:
{{ number_expression | number[:fractionSize] }}
Formats a number as text. If the input is not a number an empty string is returned.
There are more filters like json, limitTo, filter, orderBy. We will go through them in next few articles as and when we use them. For now you can refer to Filter documentation for more details.

That’s All Folks

We have just scratched the surface of a big ocean. AngularJS offers so much more that we can only touch different aspects once we actually start using it.
In this tutorial we went through an introduction of AngularJS and also learned how to set it up in any webapplication. Also we saw different angular attributes like ng-app, ng-model, ng-show etc and their usage. Then we checked filters in angular. We saw few basic filters like uppercase, lowercase.
Stay tuned for next tutorial where we will see everything about AngularJS Controllers and $scope.Update: Next tutorial is published. Read AngularJS Controller Tutorial.
I hope you like the series of tutorials on AngularJS.

3 comments:

de said...

Great & Useful Articles

Backbone.js Course
BackboneJS Training
BackboneJS Online Training
BackboneJS Training in Chennai



Great & Useful Articles

Best Angularjs Training Chennai. Angularjs training is essential for developing any single page web application. You have learn Angularjs indepth to creating enterpirse SPA application.

Angularjs Training
Angularjs Course
Angularjs Online Training
Angularjs Training in Chennai
AngularJS Interview Questions

kavyasri said...

Its good aritical to learn angular.

Angular JS Online training
Angular JS training in hyderabad


Chaitanya said...

Hi there friends, Good paragraph and nice arguments commented at this place, I am really enjoying by these.
Power Apps And Power Automate Training from Hyderabadg
Oracle Access Manager Training from Hyderabadg
SSAS Training from Hyderabadg