angularjs 101

Post on 12-Jul-2015

372 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ANGULARJS 101"Cause evrything is cool the ng-way"

#GDG Blida #DEVFEST

#badjokes!

HOUSSEM YAHIAOUI

AKA : EL-CODE

Student & GDG Blida member

&

MEAN stack lover & AngularJS indoor speacker

PS: I'M NOT A PSYCHOPATH

FRIENDLY BUT DEADLY PERSON

If you are || you know someone who like those stuff just call me at: 

+213 0 - what-ever !

AGENDA !1. What is Angular ?2. What is a SPA3. Angularjs Anatomy :

1. App vs module

2. Services

3. Controllers

4. Factories

5. Directives

So Let's Rock in !

First of all :

In order to make things even clearer !

WHAT IS ANGULARJS ?what about a History lesson !

Developed in 2009 By : Misko Hevery, publicly released in

oct 2010 version : 0.9.0 and now we're in version 1.3.6

And his PM Said

AngularJS is :

1. An intuitive framework that makes it easy to organizeyour code.

2. An MV* framework : MVC / MVVM / MVP ...

3. A two way data binding framework : a datasynchronization method that let the value change inmodel and view side.

Me when i start to get along with Angularjs

SPA !Question:

What's that ?

Spa !"Single-Page Applications (SPAs) are Web apps that load aSingle HTML page and dynamically update that page as

the user interacts with the app."Mike Wasson

Or :

"An awesome relatively new tech for awesome cool andUI/UX capable application that makes you feel like a JS guru

and makes you looks good in public aka: "Khshine"Me

Another Question:

Why we don't use Jquery

Jquery capabilites are framed in the DOM manipulation sothe framework can't handle certain SPAs needed

behaviours such as routing & role decaupling aka SOC ...

ANGULARJS ANATOMY !

NG APP !

App or Module ?

Simple RE : App = Module*

& remember

The What ?

Consider the module as your container, that container canhave your application different parts : Controllers / Filters/ Services / Directives / Constants / Values / Interceptors

...

THE HOW!Angularjs apps like many other framework have a Viewside and a Js files which attach to it and manage it so in

order to have a fully working application we need thefollowing:

In JS Side !

// in the app.js file or what ever you want to name it

angular.module('application name', ['External modules / it's blank by default]);

//or

var app = angular.module('application name', []);  // now we use the handled variable instead  app.   *   *   *   *

In View Side !

Template / Index / Fragment ... *<html ng‐app="Application Name">  <head>   <!‐‐ Something HERE ! ‐‐>  </head>   <body>    <!‐‐ Something HERE ! ‐‐>  </body>

ANGULARJS SERVICES

Question in mind !

What's a service ? and why we Should use it ?

The What ?

A substitutable objects that are wired together using DI.You can use services to organize and share code across

your appFrom the angularjs.org site

Angular support two type of services:

1. Core services: Are the ones shiped with angular outside of the boxwhich mean that we can use them whenever we want.

- A core service is prefixed by the : "$" sign like : $http / $q / $window ...

2. Custom services: Are the ones that we write with and for angular tosuite our special needs and also we can use them whenever we want.

Services in Angular have two different names andmanners to code them, we have:

1. Factories

2. Services

So far we have a anything like a SPALet's change it !

SPAs neat functionality is Routing

Let's talk about that one

AngularJS services are a poviders of somehow they providesomething when they called

and because of that we have the Routing servicerepresented in the officiel ngRoute module. or other the

new awesome module the ui-router module.

let's $digest that !

From our CodeLab Code

Let's analyse the code :

1. $stateProvider != an Angularjs Service, it's a ui-routerservice

2. the State represent a route a urlproperty in ourqueryString

3. Each route need 4 main things :

1. A Url

2. A Name

3. A Controller - we will talk about that in the next slide -

4. A template : an html page that shows our needed info

WHATS IS A CONTROLLER!

Angularjs controller is a javascript constructor functionthat is used to augment the Angular Scope

From the angularjs.org site

The How !

// 1/2 ways to write controllers this way let you focus on// your javascript code and push the angular configuration awayvar Classy = function($scope){   $scope.name = "houssem"; };// NG Associate the controller to the app in hand !angular.module('app').controller('Class', Classy);

Or

// 2nd way to write your angurlarjs controller using the angularjs documented wayangular.module('app').controller('Class', function($scope){   $scope.name = "houssem"; };

But wait there is something to consider

"Optimisation"

So after minificationWe are goins to have the folowing

var Class=function(s){s.name="houssem";};angular.module('app').controller('Class', Classy);

So one big mess of unreadable code+

Unkown ng arguments !=

We Need a solution !

Dont fear "DI" is here !

But How? and Who it's gonna FIX the problem!

The How !// 1/2 ways to write controllers this way let you focus on// your javascript code and push the angular configuration away

var Classy = function($scope){   $scope.name = "houssem"; };

// 'DI' magicClassy.$inject = ['$scope'];// NG Associate the controller to the app in hand !angular.module('app').controller('Class', Classy);

so after minification we're going to have the followingvar Classy=function(s){s.name="houssem";};Classy.$inject=['$scope'];angular.module('app').controller('Class', Classy);

The result : Same mess with correct output and a happyconsole

WHATS IS A FACTORY!

Problimatic : The Web need DATA

As a solution:

AngularJS factory can help us getting the requiried informations in order touse it in data needed places.

The Factory syntax !

// 1/2 ways to write factories this way let you focus on// your javascript code and push the angular configuration away

var ClassyFactory = function($http){  return {   getGDGBlidaMembers : function(year){    return $http.get('/DATA ENDPOINT ROUTE/'+year);  }    };// DI ClassyFactory.$inject = ['$http'];// NG Associate the factory to the app in hand !angular.module('app').factory('ClassyFactory', ClassyFactory);

PS : we're using the revealing pattern ;-)

But : you may say the following :

Now we have the needed data, let's use it !

But How ?

Simply declare it as dependency in your Controller

var Classy = function($scope, ClassyFacotry, INotify){   ClassyFactory.getGDGBlidaMembers(2014)   .success(response) {    $scope.data = response.members;    INotify.onSuccess('Data Gathring', 'Done with success !');   }.error(response){    INotify.onError('An error has occured', response.err_message + ' !');   }   });};//DIClassy.$inject = ['$scope', 'ClassyFacotry', 'INotify'];// NG Associate the controller to the app in hand !angular.module('app').controller('Class', Classy);       

Your now well covered !

Display It ^_^

WHATS IS A DIRECTIVE !

For me a Directive is

HTML5 ++

But What's exactly i a Directive?

A directive is a new concept introduced in Angularjs, andused to :

1. To give our Page / Template / View a new set of functionnality.

2. Let us handle our JS logic without extra work.

3. Best part is : Angularjs let and gives you the power of creatingnew directives to suit our needs.

That's looks promising but how Exactly it works ?

1. Consider the directive as : your regular HTML5 markupAttribute.

2. Consider the directive as : your new regular HTML5markup Tag.

3. Or Both !

<input type="text" name="email" awesome‐attrib‐directive="info" required="true">         

<gdg‐awesome required="true"></gdg‐awesome>         

<gdg‐awesome grpe‐name="GDG" grpe‐loc="Blida"></gdg‐awesome>         

Angular is already have a really cool set of core directives

And more ...

That was it ! / Keep in touch with me !

G+ : +HoussemYahiaoui

Twittre : @free_g33k

Facebook : fcb.com/houssem.intern0t#peace

top related