Title Text
AngularJS
A Brief Introduction
{ By: Nirmal V }
Title Text
Text
An-gu-lah?
Why should I?
Title Text
Text
To answer that question
a little bit of history recap is needed...
Title Text
Text
Web History
Text
Static Pages
<html>
<body>
<h1>Mattias homepage</h1>
<p>Welcome to my homepage</p>
</body>
</html>
Text
Generated Pages
$name = "Mattias";
print "<html>";
print "<body>";
print "<h1>$name homepage</h1>";
print "<p>Welcome to my homepage</p>";
print "</body>";
print "</html>";
Perl
Php
<html>
<body>
<h1><?php $name="Mattias"; echo $name ?> homepage</h1>
<p>Welcome to my homepage</p>
</body>
</html>
Text
Javascript & DOM
<html>
<body>
<h1></h1>
<p>Welcome to my homepage</p>
<script>
h1 = document.getElementsByTagName("h1")[0];
h1.innerHTML = "Mattias Homepage";
</script>
</body>
</html>
- DOM Manipulation
- Browser Compatibility Problems
Text
JQuery
<html>
<body>
<h1></h1>
<p>Welcome to my homepage</p>
<script>
$("h1").innerHTML("Mattias Homepage");
</script>
</body>
</html>
- Powerful element selection
- Browser Compatibility handled by Library
- Same DOM Manipulation
Title Text
jQuery.
Text
Once a best friend forever
...until the era of webapps
Title Text
It has grown from
a handy DOM manipulation tool...
Text
to an all-in-one juggernaut
without much forethoughts
Web Apps
jQuery + Webapp = Headaches
- Structureless spaghetti code
- Selectors creating tight coupling
- Not enough high level abstractions
Then, there is
Backbone.js
It brings structures to our codes
...but still uses jQuery to handle the Views
Issues Solved by Backbone
- Spaghetti code
Issues NOT Solved
by Backbone
- Selectors creating tight coupling
What about
High Level Abstractions?
Well, since Backbone is unopinionated...
It lacks the necessary tools
to easily manage any webapp
above a certain threshold in complexity
From personal experiences...
- Single view? Cool.
- Multiple sibling views? Cool.
- Multiple nested views? OMG.
(Many real-world webapps belong to this category)
In the end,
Backbone asks you to write
A Lot More Codes
to get what you want
AngularJS
Text
Here to save your day
What the * is
AngularJS
and why should I use it, exactly?
Text
It's
FAST
(Once you two become good buddies)
It brings
QUALITY
(Both in terms of code structure and robustness)
It's
FREE
(w00t!)
AngularJS
Text
puts a heavy emphasis on
Separation of Concerns
It's better to build UI
DECLARATIVELY
It's better to separate
DOM MANIPULATION
from
REAL LOGICS
It's better to separate
Client Code
from
Server Code
Text
AngularJS - MVC Architecture
Text
Model − It is the lowest level of the pattern responsible for maintaining data.
View − It is responsible for displaying all or a portion of the data to the user.
Controller − It is a software Code that controls the interactions between the Model and View.
AngularJS - MVC Architecture
Text
AngularJS - Important Parts
Text
ng-app − This directive defines and links an AngularJS application to HTML.
ng-model − This directive binds the values of AngularJS application data to HTML input controls.
ng-bind − This directive binds the AngularJS Application data to HTML tags.
AngularJS - Directives
Text
ng-app − This directive starts an AngularJS Application.
ng-init − This directive initializes application data.
ng-model − This directive defines the model that is variable to be used in AngularJS.
ng-repeat − This directive repeats html elements for each item in a collection.
AngularJS
Scope & Controller
Scope in AngularJS
is a plain old Javascript object
$scope
{
$$childHead: Child
$$childTail: Child
$$listeners: Object
$$nextSibling: Child
$$prevSibling: null
$$watchers: Array[2]
$id: '004'
$parent: Child
...
}
Each
Controller Instance
has its own Scope
The properties of a Scope is the
corresponding Controller's
Model
And the
View Template
knows nothing about the Controller
...except those
exposed through the Scope
Kinda Like a ViewModel
Let's practice with some examples!
Questions?
nirmalkamath@gmail.com
http://codenirmal.com/
angularjs
By nirmalvyas
angularjs
- 1,212