26
Working with Angular JS, A dive to SPA! ~Abhishek Sur

Angular JS, A dive to concepts

Embed Size (px)

Citation preview

Page 1: Angular JS, A dive to concepts

Working with Angular JS, A dive to SPA!

~Abhishek Sur

Page 2: Angular JS, A dive to concepts

Agenda• Misunderstandings • What is angular?• SPAs• Why angular?• Features• MVC/MVVM• Directives, filters, expression• Some cool Demo

Page 3: Angular JS, A dive to concepts

Another JS Lib

Lots of new learning

Difficult to learn

Useful for web only ?Used for

styling purpose

Page 4: Angular JS, A dive to concepts

What is ANGULARJS?

• It’s not a JavaScript library (As they say). There are no functions which we can directly call and use.

• It is not a DOM manipulation library like jQuery. But it uses subset of jQuery for DOM manipulation (called jqLite).

Page 5: Angular JS, A dive to concepts

What is ANGULAR JS? (contd…)

• Focus more on HTML side of web apps.

• For MVC/MVVM design pattern

• AngularJS is a Javascript MVC framework created by Google to build properly architectured and maintenable web applications.

• “ANGULARJS is what HTML could have been if it had been designed for web application development.”

• AngularJS extends HTML with new attributes.

Page 6: Angular JS, A dive to concepts

Single Page Application (SPA)SPA Demo

http://www.myspa.com

View View

View View

Page 7: Angular JS, A dive to concepts

The Challenge with SPAs

DOM Manipulation History

Routing

Module Loading

Data Binding

Object Modeling

Ajax/Promises

Caching

View Loading

Page 8: Angular JS, A dive to concepts

Solution?

Page 9: Angular JS, A dive to concepts

Why ANGULARJS?• Defines numerous ways to organize web application at client side.

• Enhances HTML by attaching directives, custom tags, attributes, expressions, templates within HTML.

• Encourage TDD

• Encourage MVC/MVVM design pattern

• Code Reuse

• Good for Single Page Apps (SPA)

• Cool Features -> Next Slide

Page 10: Angular JS, A dive to concepts

Key Features of ANGULARJS

ngularJS is a full-featured SPA framework

Data Binding MVC Routing

Templates

ViewModel Views

Controllers Dependency Injection

Directives

Testing

Controllers

jqLite

Validation

FactoriesHistory

Page 11: Angular JS, A dive to concepts

MVC : Model View Controller

View

ControllerModel

1. Event or User Action or View Load

2. Maps to particular Model after fetching the data

3. Implement the Business Logic on response data and Bind it to View

View : • Renders the Model data• Send User actions/events to

controller• UI

Controller: • Define Application Behavior• Maps user actions to Model• Select view for response

Model: • Business Logic• Notify view changes• Application

Functionality• Data in general

Page 12: Angular JS, A dive to concepts

MVVM: Model View ViewModel

View

ViewModelModel

UI

Presentation LogicBusiness Logic and Data

• User actions, commands• Data binding• Notifications

• Data Access• Update ViewModel about

change

Page 13: Angular JS, A dive to concepts

What are Directives?

• The directives can be placed in element names, attributes, class names, as well as comments.  Directives are a way to teach HTML new tricks.

• A directive is just a function which executes when the compiler encounters it in the DOM. 

• <input ng-model='name'>

• Custom Defined Directives

• <span draggable>Drag ME</span>

Page 14: Angular JS, A dive to concepts

What are Directives? (contd..)

<!DOCTYPE html><html ng-app><head> <title></title></head><body> <div class="container"> Name: <input type="text" ng-model="name" /> {{ name }} </div>

<script src="Scripts/angular.js"></script></body></html>

Directive

Directive

Data Binding Expression

Page 15: Angular JS, A dive to concepts

Iterating with ng-repeat Directive<html data-ng-app="">...

<div class="container" data-ng-init="names=['Dave','Napur','Heedy','Shriva']">

<h3>Looping with the ng-repeat Directive</h3> <ul> <li data-ng-repeat="name in names">{{ name }}</li> </ul> </div>

...</html>

Iterate through names

Page 16: Angular JS, A dive to concepts

Filters

Angular filters format data for display to the user.

{{ expression [| filter_name[:parameter_value] ... ] }}

{{ uppercase_expression | uppercase }}

{{ expression | filter1 | filter2 }}

Can create custom filters

Page 17: Angular JS, A dive to concepts

Using Filters

<ul> <li data-ng-repeat="cust in customers | orderBy:'name'"> {{ cust.name | uppercase }} </li></ul>

Order customers by name property

<input type="text" data-ng-model="nameText" /><ul> <li data-ng-repeat="cust in customers | filter:nameText | orderBy:'name'"> {{ cust.name }} - {{ cust.city }}</li></ul>

Filter customers by model value

Page 18: Angular JS, A dive to concepts

Expression

Expressions are JavaScript-like code snippets that are usually placed in bindings such as {{ expression }}

<body>

1+2={{1+2}}

</body>

Page 19: Angular JS, A dive to concepts

Demo

Page 20: Angular JS, A dive to concepts

Why should we use Angular JS?

• Bootstrap features

• Directives for animation & effects for interactive UI

• SPA : modern way to represent WEB APP

• Compatible with mobile app development

Page 21: Angular JS, A dive to concepts

Why Developer should use Angular JS?

• It is developed by google.

• RESTful actions (Using one line of JS you can quickly communicate with server)

• Dependency Injection (DI) is a software design pattern that deals with how components get hold of their dependencies.

• Provides several options for testing (TDD)

• Flexibility with filters

• Good documentation & resources.

Page 22: Angular JS, A dive to concepts

Some Statistics!

o Angular JS is 3 times faster than any external JS available till now ~Google.

Page 23: Angular JS, A dive to concepts

More Statistics! (Interesting One)• GITHUB Stats:

• Stars:o if you star a repository, you basically want to show your appreciation as well as

keep track of repositories that you find interesting without it spamming your timeline.

o In top 3 of github stars project list, only bootstrap & node js is ahead of it.o Check stars stats:o https://github.com/search?utf8=%E2%9C%93&q=stars%3A%3E30000&type=Repos

itories&ref=searchresults• fork:

o In software engineering, a project fork happens when developers take a legal copy of source code from one software package and start independent development on it, creating a distinct piece of software.

o In top 7 of github fork project list.o Check fork stats:o https://github.com/search?utf8=%E2%9C%93&q=forks%3A%3E10000&type=Repos

itories&ref=searchresults

Page 24: Angular JS, A dive to concepts

Resources

Documentation

• AngularJS Developer Guide

• AngularJS API

• AngularJS Tutorial

Videos

• AngularJS Fundamentals In 60-ish Minutes

• Introduction to Angular JS

• AngularJS end-to-end web app tutorial Part I

Page 25: Angular JS, A dive to concepts
Page 26: Angular JS, A dive to concepts

Abhishek Sur

Email : [email protected]

Twitter: @abhi2434

Facebook : /abhi2434