SlideShare a Scribd company logo
AngularJS
Fundamentals
Aviran Cohen
Hello!
I am Aviran Cohen
Full-stack Developer
7 years experience in web development
blog.avirancohen.com
facebook.com/MEvsWEB
What we’ll cover
1.A brief history of web development
2.Introduction
3.Architecture
4.Getting Started
5.Directives
6.HTML Compiler
1.
A Brief History
Of Web
Development
Once upon a time
jQuery (2006)
jQuery
▣ Started as DOM manipulation tool
▣ Became an all-in-one javascript library
□ without much forethoughts
▣ Our best friend back then, until..
The Era of Web
Apps
jQuery + Webapp = Headaches
▣ Structureless spaghetti code
□ Total code mess
▣ Selectors creating tight coupling
□ Non-reusable code
▣ Not enough high level abstractions
□ A lot of code required to be written
= TOTAL MESS
Backbone.js (2010)
backbone.js
▣ It brings structures to our code
▣ but still uses jQuery to handle the views
backbone.js
▣ Solved
□ No more spaghetti code
▣ NOT Solved
□ Selectors creating tight coupling
□ Not enough high level abstractions
What about High Level Abstractions?
▣ Backbone is unopinionated.
▣ It lacks the necessary tools to easily manage
any webapp above a certain threshold in
complexity
▣ The bottom line - Backbone asks you to write
A Lot More Code to get what you want
And the earth was without form,
and void; and darkness wasupon
the face of the deep
‘’
And the earth was without
form, and void; and darkness
wasupon the face of the deep
And God said:
Let there be light..
‘’
And the earth was without
form, and void; and darkness
wasupon the face of the deep
And God said:
Let there be light..
...and there was light
AngularJS
Initial release in 2009
Faster development
Quality code (structure and robustness)
Developed by Google
Trends
How come jQuery is still way more popular
than angular?
It’s not one or another
▣ Angular does not replace jQuery!
▣ jQuery library is the undoubted king of a DOM
manipulation
Angular’s Role
▣ Angular offers a comprehensive framework to
develop front-end applications
▣ Actually Angular provides jqLite out of the
box
□ a jQuery-like library that provides a subset of
jQuery functionality
2.
Introduction
What
AngularJS is all
about
‘’
AngularJS is:
1.a powerful Front-end
JavaScript framework
1.Extends HTML to build
complex web applications
1.Organizes JavaScript code
into reusable components
How things worked before:
JS
HTML
Structure
Behavior
CSSPresentation
HTMLInterface
CSSPresentation
JSLogic
How things works the Angular’s way:
Why Angular
▣ Component based - Code reuse
▣ Extends HTML by adding directives, custom
tags, attributes, expressions, templates within
HTML
▣ Data Binding and Dependency Injection
□ Everything is communicated automatically
▣ Dependency-injected code for easy testing
and TDD
The major features of AngularJS
▣ Easy Data Binding: Two way Data Binding
▣ Reusable Components - Directives
▣ Dependency injection
▣ Routing
▣ Templating
▣ Modules
▣ Controllers
▣ Services
▣ Expressions
▣ Filters
▣ Form Validation
▣ $scope, $http, $routeProvides..
3.
Architecture
What kind of
architecture
Angular use?
Template
Model
View
Compile
Change to View
updates the Model
Change to Model
updates the View
Two-way Binding
Two-way Binding
▣ Any changes in the scope are reflected in the
view, and any user interactions with the view
are reflected in the scope model.
▣ This makes the scope model the single source
of truth
MVC? MVVM?
Model-View-Controller?
Model-View-ViewModel?
VIEW
define the data and methods that
will be available for the view
MODELbusiness logic
Html Template
$scope (VM)
Two-way Data-
Binding
Commands
Commands Change Notifications
What architecture is it?
MVW
Model View Whatever - Whatever works for you
4.
Getting Started
Getting started
▣ ng-app
<html ng-app=”myApp”>
<head>
<script src='angular.js'></script>
</head>
<body>
</body>
</html>
ng-app
▣ Use this directive to bootstrap an application
▣ Only one ng-app directive can be used per
HTML document
<html ng-app>
Markup {{ expression }}
▣ Double curly brace notation {{ }}
▣ Used to bind expressions to elements is built-
in Angular markup.
<div>1 + 2 = {{1+2}}</div>
Hello {{username}}
ng-model
▣ The ng-model directive binds an input,select,
textarea (or custom form control) to a
property on the scope
▣ Two-way binding
Data Binding
▣ ng-model
▣ ng-show
<html ng-app>
<head>
<script src='angular.js'></script>
</head>
<body>
<input ng-model='user.name'>
<div ng-show='user.name'>Hi {{user.name}}</div>
</body>
</html>
Modules (HTML side)
▣ All AngularJS JavaScript code is stored in
modules
▣ And a module is attached to a page
var app = angular.module('myApp', ['otherModule', 'anotherModule']);
<html ng-app="myApp"> ... </html>
Modules (Javascript)
▣ Modules are used to define services, controllers,
directives and filters
▣ Each module member is a constructor which can
inject other services
app.factory('myValues', function() {
return function() {
return [1,2,3,4,5,6];
};
});
app.filter('skipFirstValue', function() {
return function(data) {
return data.slice(1);
}
});
app.run(function($rootScope, myValues, skipFirstValueFilter) {
//this is called when the page is loaded
$rootScope.values = skipFirstValue(myValues());
});
$scope
▣ The scope is the glue between JavaScript and
HTML in AngularJS
▣ Anything placed on the $scope object can be
referenced in HTML
<div ng-controller="AppCtrl">
Hello, so far I have <strong>{{ totalApples }} </strong> apples.
<button ng-click="moreApples()">Give me more!</button>
</div>
app.controller('AppCtrl', function($scope) {
$scope.totalApples = 0;
$scope.moreApples = function() {
$scope.totalApples++;
}
});
$scope
Think of the scope as the memory for your HTML
Controllers
▣ Controllers are defined inside of a module like
all other services
app.controller('AppCtrl', function($scope) { ... });
Controllers
▣ And they can be referenced in HTML using
ng-controller (Or within routes..)
<html ng-app>
<head>
<script src='angular.js'></script>
<script src='controllers.js'></script>
</head>
<body ng-controller='UserController'>
<div>Hi {{user.name}}</div>
</body>
</html>
function UserController($scope) {
$scope.user = { name:'Larry' };
}
index.html
controllers.js
Ajax
AJAX using $http
▣ Use $http to perform an AJAX request
▣ The scope will automatically update itself
when $http returns gets a response
var app = angular.module('myApp', []);
app.controller('ColorsCtrl', function($scope, $http) {
$scope.colors = $http.get('/api/colors.json');
});
5.
Directives
The Magic
Begins..
No more HTML mess
Today’s websites have giant series of <div> with
extensive and exhaustive CSS, causing little
semantic clarity.
With Angular you can create your own tags and
attributes using Directives.
Directives
▣ Special custom components in HTML
▣ The directives can be placed in element
names, attributes, class names, as well as
comments.
▣ Directives are a way to teach HTML new
tricks.
<div my-precious-element></div>
Directives
▣ Handled in JavaScript via DOM manipulation
▣ A directive is just a function which executes
when the compiler encounters it in the DOM.
app.directive('myPreciousElement', function() {
return function($scope, element, attrs) {
element.bind('click', function() {
alert('clicked!');
});
};
});
Possible usage of directives
<rating max='5' model='stars.average'>
<tabs>
<tab title='Active tab' view='...'>
<tab title='Inactive tab' view='...'>
</tabs>
<tooltip content='messages.tip1'>
Built-in Directives
▣ AngularJS provides series of predefined HTML
components
▣ These components reduce much of the
JavaScript required to make HTML appear
dynamic
Some of the Built-in Directive
Components
▣ ng-repeat
▣ ng-show
▣ ng-hide
▣ ng-disabled
▣ ng-href
▣ ng-click
▣ ng-dbclick
▣ ng-mouseup
▣ ng-mouseover
▣ ng-focus
▣ ng-blur
▣ ...
6.
HTML Compiler
HTML Compiler
▣ Angular’s HTML compiler allows the
developer to teach the browser new HTML
syntax.
▣ The compiler allows you to attach behavior to
any HTML element or attribute and even
create new HTML elements or attributes with
custom behavior.
▣ Angular calls these behavior extensions
directives.
How the HTML Compiler works
▣ Compiler is an angular service which traverses
the DOM looking for attributes.
▣ The compilation process happens in two
phases:
□ Compile: traverse the DOM and collect all of the
directives. The result is a linking function.
□ Link: combine the directives with a scope and
produce a live view.
Exercise
http://www.learn-angular.org
Thanks!
Any questions?
You can find me at:
blog.avirancohen.com
facebook.com/MEvsWEB
Credits
▣ http://slides.com/gsklee/angularjs-a-brief-
introduction
▣ https://docs.google.com/presentation/d/1H
9u9xd0OE0W1o_5Aeug7uSR0AXXPidtWBQN
mpi_ZP9I

More Related Content

What's hot

Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJS
FITC
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
Andrew Rota
 
Angular js
Angular jsAngular js
Angular js
Knoldus Inc.
 
AngularJS for designers and developers
AngularJS for designers and developersAngularJS for designers and developers
AngularJS for designers and developers
Kai Koenig
 
Real World Web components
Real World Web componentsReal World Web components
Real World Web components
Jarrod Overson
 
Angular - Beginner
Angular - BeginnerAngular - Beginner
Angular - Beginner
Riccardo Masetti
 
AngularJS Beginners Workshop
AngularJS Beginners WorkshopAngularJS Beginners Workshop
AngularJS Beginners Workshop
Sathish VJ
 
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Jeado Ko
 
Levent-Gurses' Introduction to Web Components & Polymer
Levent-Gurses' Introduction to Web Components & PolymerLevent-Gurses' Introduction to Web Components & Polymer
Levent-Gurses' Introduction to Web Components & Polymer
Erik Isaksen
 
JsViews - Next Generation jQuery Templates
JsViews - Next Generation jQuery TemplatesJsViews - Next Generation jQuery Templates
JsViews - Next Generation jQuery Templates
BorisMoore
 
Angular js
Angular jsAngular js
Angular js
Dinusha Nandika
 
AngularJS
AngularJSAngularJS
Angular js PPT
Angular js PPTAngular js PPT
Angular js PPT
Imtiyaz Ahmad Khan
 
Vue presentation
Vue presentationVue presentation
Vue presentation
Norbert Nader
 
Web components - An Introduction
Web components - An IntroductionWeb components - An Introduction
Web components - An Introduction
cherukumilli2
 
AngularJS best-practices
AngularJS best-practicesAngularJS best-practices
AngularJS best-practices
Henry Tao
 
Angularjs PPT
Angularjs PPTAngularjs PPT
Angularjs PPT
Amit Baghel
 
Understanding angular js
Understanding angular jsUnderstanding angular js
Understanding angular js
Aayush Shrestha
 
RequireJS
RequireJSRequireJS
RequireJS
Tim Doherty
 
Laravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with example
Katy Slemon
 

What's hot (20)

Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJS
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
 
Angular js
Angular jsAngular js
Angular js
 
AngularJS for designers and developers
AngularJS for designers and developersAngularJS for designers and developers
AngularJS for designers and developers
 
Real World Web components
Real World Web componentsReal World Web components
Real World Web components
 
Angular - Beginner
Angular - BeginnerAngular - Beginner
Angular - Beginner
 
AngularJS Beginners Workshop
AngularJS Beginners WorkshopAngularJS Beginners Workshop
AngularJS Beginners Workshop
 
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
 
Levent-Gurses' Introduction to Web Components & Polymer
Levent-Gurses' Introduction to Web Components & PolymerLevent-Gurses' Introduction to Web Components & Polymer
Levent-Gurses' Introduction to Web Components & Polymer
 
JsViews - Next Generation jQuery Templates
JsViews - Next Generation jQuery TemplatesJsViews - Next Generation jQuery Templates
JsViews - Next Generation jQuery Templates
 
Angular js
Angular jsAngular js
Angular js
 
AngularJS
AngularJSAngularJS
AngularJS
 
Angular js PPT
Angular js PPTAngular js PPT
Angular js PPT
 
Vue presentation
Vue presentationVue presentation
Vue presentation
 
Web components - An Introduction
Web components - An IntroductionWeb components - An Introduction
Web components - An Introduction
 
AngularJS best-practices
AngularJS best-practicesAngularJS best-practices
AngularJS best-practices
 
Angularjs PPT
Angularjs PPTAngularjs PPT
Angularjs PPT
 
Understanding angular js
Understanding angular jsUnderstanding angular js
Understanding angular js
 
RequireJS
RequireJSRequireJS
RequireJS
 
Laravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with example
 

Similar to ME vs WEB - AngularJS Fundamentals

AngularJS.pptx
AngularJS.pptxAngularJS.pptx
AngularJS.pptx
ssusera120f8
 
Angular js
Angular jsAngular js
Angular js
Radheshyam Kori
 
Angular js
Angular jsAngular js
Angular js
Radheshyam Kori
 
Angular js
Angular jsAngular js
Angular js
Manav Prasad
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
GDSC UofT Mississauga
 
Angularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetupAngularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetup
Goutam Dey
 
AngularJS Workshop
AngularJS WorkshopAngularJS Workshop
AngularJS Workshop
Gianluca Cacace
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
Mike Wilcox
 
Angular js 2.0 beta
Angular js 2.0 betaAngular js 2.0 beta
Angular js 2.0 beta
Nagaraju Sangam
 
Learning AngularJS - Complete coverage of AngularJS features and concepts
Learning AngularJS  - Complete coverage of AngularJS features and conceptsLearning AngularJS  - Complete coverage of AngularJS features and concepts
Learning AngularJS - Complete coverage of AngularJS features and concepts
Suresh Patidar
 
AngularJs
AngularJsAngularJs
AngularJs
Abdhesh Kumar
 
Angularjs 131211063348-phpapp01
Angularjs 131211063348-phpapp01Angularjs 131211063348-phpapp01
Angularjs 131211063348-phpapp01
Arunangsu Sahu
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
murtazahaveliwala
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
Stéphane Bégaudeau
 
Angular JS, A dive to concepts
Angular JS, A dive to conceptsAngular JS, A dive to concepts
Angular JS, A dive to concepts
Abhishek Sur
 
Angular js for beginners
Angular js for beginnersAngular js for beginners
Angular js for beginners
Munir Hoque
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014
Ran Wahle
 
Introduction to Angular Js
Introduction to Angular JsIntroduction to Angular Js
Introduction to Angular Js
Professional Guru
 
Angular workshop - Full Development Guide
Angular workshop - Full Development GuideAngular workshop - Full Development Guide
Angular workshop - Full Development Guide
Nitin Giri
 
Introduction to Angular Js
Introduction to Angular JsIntroduction to Angular Js
Introduction to Angular Js
Professional Guru
 

Similar to ME vs WEB - AngularJS Fundamentals (20)

AngularJS.pptx
AngularJS.pptxAngularJS.pptx
AngularJS.pptx
 
Angular js
Angular jsAngular js
Angular js
 
Angular js
Angular jsAngular js
Angular js
 
Angular js
Angular jsAngular js
Angular js
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
 
Angularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetupAngularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetup
 
AngularJS Workshop
AngularJS WorkshopAngularJS Workshop
AngularJS Workshop
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
 
Angular js 2.0 beta
Angular js 2.0 betaAngular js 2.0 beta
Angular js 2.0 beta
 
Learning AngularJS - Complete coverage of AngularJS features and concepts
Learning AngularJS  - Complete coverage of AngularJS features and conceptsLearning AngularJS  - Complete coverage of AngularJS features and concepts
Learning AngularJS - Complete coverage of AngularJS features and concepts
 
AngularJs
AngularJsAngularJs
AngularJs
 
Angularjs 131211063348-phpapp01
Angularjs 131211063348-phpapp01Angularjs 131211063348-phpapp01
Angularjs 131211063348-phpapp01
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
 
Angular JS, A dive to concepts
Angular JS, A dive to conceptsAngular JS, A dive to concepts
Angular JS, A dive to concepts
 
Angular js for beginners
Angular js for beginnersAngular js for beginners
Angular js for beginners
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014
 
Introduction to Angular Js
Introduction to Angular JsIntroduction to Angular Js
Introduction to Angular Js
 
Angular workshop - Full Development Guide
Angular workshop - Full Development GuideAngular workshop - Full Development Guide
Angular workshop - Full Development Guide
 
Introduction to Angular Js
Introduction to Angular JsIntroduction to Angular Js
Introduction to Angular Js
 

Recently uploaded

Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
sudsdeep
 
dachnug51 - Whats new in domino 14 .pdf
dachnug51 - Whats new in domino 14  .pdfdachnug51 - Whats new in domino 14  .pdf
dachnug51 - Whats new in domino 14 .pdf
DNUG e.V.
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
sofiafernandezon
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
miso_uam
 
NBFC Software: Optimize Your Non-Banking Financial Company
NBFC Software: Optimize Your Non-Banking Financial CompanyNBFC Software: Optimize Your Non-Banking Financial Company
NBFC Software: Optimize Your Non-Banking Financial Company
NBFC Softwares
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
TwisterTools
 
NYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdfNYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdf
AUGNYC
 
Migrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS CloudMigrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS Cloud
Ortus Solutions, Corp
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Livetecs LLC
 
active-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptxactive-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptx
sudsdeep
 
MVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptxMVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptx
Mitchell Marsh
 
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
onemonitarsoftware
 
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
Hironori Washizaki
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
Roshan Dwivedi
 
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
SimonedeGijt
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Sparity1
 
Development of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML TechnologiesDevelopment of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML Technologies
MaisnamLuwangPibarel
 
Google ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learningGoogle ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learning
VishrutGoyani1
 
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
DNUG e.V.
 

Recently uploaded (20)

Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
 
dachnug51 - Whats new in domino 14 .pdf
dachnug51 - Whats new in domino 14  .pdfdachnug51 - Whats new in domino 14  .pdf
dachnug51 - Whats new in domino 14 .pdf
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
 
NBFC Software: Optimize Your Non-Banking Financial Company
NBFC Software: Optimize Your Non-Banking Financial CompanyNBFC Software: Optimize Your Non-Banking Financial Company
NBFC Software: Optimize Your Non-Banking Financial Company
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
 
NYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdfNYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdf
 
Migrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS CloudMigrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS Cloud
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
 
active-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptxactive-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptx
 
MVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptxMVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptx
 
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
 
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
 
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
 
Development of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML TechnologiesDevelopment of Chatbot Using AI\ML Technologies
Development of Chatbot Using AI\ML Technologies
 
Google ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learningGoogle ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learning
 
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
Abortion pills in Fujairah *((+971588192166*)☎️)¥) **Effective Abortion Pills...
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
 

ME vs WEB - AngularJS Fundamentals

  • 2. Hello! I am Aviran Cohen Full-stack Developer 7 years experience in web development blog.avirancohen.com facebook.com/MEvsWEB
  • 3. What we’ll cover 1.A brief history of web development 2.Introduction 3.Architecture 4.Getting Started 5.Directives 6.HTML Compiler
  • 4. 1. A Brief History Of Web Development
  • 5. Once upon a time
  • 7. jQuery ▣ Started as DOM manipulation tool ▣ Became an all-in-one javascript library □ without much forethoughts ▣ Our best friend back then, until..
  • 8. The Era of Web Apps
  • 9. jQuery + Webapp = Headaches ▣ Structureless spaghetti code □ Total code mess ▣ Selectors creating tight coupling □ Non-reusable code ▣ Not enough high level abstractions □ A lot of code required to be written
  • 12. backbone.js ▣ It brings structures to our code ▣ but still uses jQuery to handle the views
  • 13. backbone.js ▣ Solved □ No more spaghetti code ▣ NOT Solved □ Selectors creating tight coupling □ Not enough high level abstractions
  • 14. What about High Level Abstractions? ▣ Backbone is unopinionated. ▣ It lacks the necessary tools to easily manage any webapp above a certain threshold in complexity ▣ The bottom line - Backbone asks you to write A Lot More Code to get what you want
  • 15. And the earth was without form, and void; and darkness wasupon the face of the deep
  • 16. ‘’ And the earth was without form, and void; and darkness wasupon the face of the deep And God said: Let there be light..
  • 17. ‘’ And the earth was without form, and void; and darkness wasupon the face of the deep And God said: Let there be light..
  • 19. AngularJS Initial release in 2009 Faster development Quality code (structure and robustness) Developed by Google
  • 21. How come jQuery is still way more popular than angular?
  • 22. It’s not one or another ▣ Angular does not replace jQuery! ▣ jQuery library is the undoubted king of a DOM manipulation
  • 23. Angular’s Role ▣ Angular offers a comprehensive framework to develop front-end applications ▣ Actually Angular provides jqLite out of the box □ a jQuery-like library that provides a subset of jQuery functionality
  • 25. ‘’ AngularJS is: 1.a powerful Front-end JavaScript framework 1.Extends HTML to build complex web applications 1.Organizes JavaScript code into reusable components
  • 26. How things worked before: JS HTML Structure Behavior CSSPresentation
  • 28. Why Angular ▣ Component based - Code reuse ▣ Extends HTML by adding directives, custom tags, attributes, expressions, templates within HTML ▣ Data Binding and Dependency Injection □ Everything is communicated automatically ▣ Dependency-injected code for easy testing and TDD
  • 29. The major features of AngularJS ▣ Easy Data Binding: Two way Data Binding ▣ Reusable Components - Directives ▣ Dependency injection ▣ Routing ▣ Templating ▣ Modules ▣ Controllers ▣ Services ▣ Expressions ▣ Filters ▣ Form Validation ▣ $scope, $http, $routeProvides..
  • 31. Template Model View Compile Change to View updates the Model Change to Model updates the View Two-way Binding
  • 32. Two-way Binding ▣ Any changes in the scope are reflected in the view, and any user interactions with the view are reflected in the scope model. ▣ This makes the scope model the single source of truth
  • 34. VIEW define the data and methods that will be available for the view MODELbusiness logic Html Template $scope (VM) Two-way Data- Binding Commands Commands Change Notifications What architecture is it?
  • 35. MVW Model View Whatever - Whatever works for you
  • 37. Getting started ▣ ng-app <html ng-app=”myApp”> <head> <script src='angular.js'></script> </head> <body> </body> </html>
  • 38. ng-app ▣ Use this directive to bootstrap an application ▣ Only one ng-app directive can be used per HTML document <html ng-app>
  • 39. Markup {{ expression }} ▣ Double curly brace notation {{ }} ▣ Used to bind expressions to elements is built- in Angular markup. <div>1 + 2 = {{1+2}}</div> Hello {{username}}
  • 40. ng-model ▣ The ng-model directive binds an input,select, textarea (or custom form control) to a property on the scope ▣ Two-way binding
  • 41. Data Binding ▣ ng-model ▣ ng-show <html ng-app> <head> <script src='angular.js'></script> </head> <body> <input ng-model='user.name'> <div ng-show='user.name'>Hi {{user.name}}</div> </body> </html>
  • 42. Modules (HTML side) ▣ All AngularJS JavaScript code is stored in modules ▣ And a module is attached to a page var app = angular.module('myApp', ['otherModule', 'anotherModule']); <html ng-app="myApp"> ... </html>
  • 43. Modules (Javascript) ▣ Modules are used to define services, controllers, directives and filters ▣ Each module member is a constructor which can inject other services app.factory('myValues', function() { return function() { return [1,2,3,4,5,6]; }; }); app.filter('skipFirstValue', function() { return function(data) { return data.slice(1); } }); app.run(function($rootScope, myValues, skipFirstValueFilter) { //this is called when the page is loaded $rootScope.values = skipFirstValue(myValues()); });
  • 44. $scope ▣ The scope is the glue between JavaScript and HTML in AngularJS ▣ Anything placed on the $scope object can be referenced in HTML <div ng-controller="AppCtrl"> Hello, so far I have <strong>{{ totalApples }} </strong> apples. <button ng-click="moreApples()">Give me more!</button> </div> app.controller('AppCtrl', function($scope) { $scope.totalApples = 0; $scope.moreApples = function() { $scope.totalApples++; } });
  • 45. $scope Think of the scope as the memory for your HTML
  • 46. Controllers ▣ Controllers are defined inside of a module like all other services app.controller('AppCtrl', function($scope) { ... });
  • 47. Controllers ▣ And they can be referenced in HTML using ng-controller (Or within routes..) <html ng-app> <head> <script src='angular.js'></script> <script src='controllers.js'></script> </head> <body ng-controller='UserController'> <div>Hi {{user.name}}</div> </body> </html> function UserController($scope) { $scope.user = { name:'Larry' }; } index.html controllers.js
  • 48. Ajax
  • 49. AJAX using $http ▣ Use $http to perform an AJAX request ▣ The scope will automatically update itself when $http returns gets a response var app = angular.module('myApp', []); app.controller('ColorsCtrl', function($scope, $http) { $scope.colors = $http.get('/api/colors.json'); });
  • 51. No more HTML mess Today’s websites have giant series of <div> with extensive and exhaustive CSS, causing little semantic clarity. With Angular you can create your own tags and attributes using Directives.
  • 52. Directives ▣ Special custom components in HTML ▣ The directives can be placed in element names, attributes, class names, as well as comments. ▣ Directives are a way to teach HTML new tricks. <div my-precious-element></div>
  • 53. Directives ▣ Handled in JavaScript via DOM manipulation ▣ A directive is just a function which executes when the compiler encounters it in the DOM. app.directive('myPreciousElement', function() { return function($scope, element, attrs) { element.bind('click', function() { alert('clicked!'); }); }; });
  • 54. Possible usage of directives <rating max='5' model='stars.average'> <tabs> <tab title='Active tab' view='...'> <tab title='Inactive tab' view='...'> </tabs> <tooltip content='messages.tip1'>
  • 55. Built-in Directives ▣ AngularJS provides series of predefined HTML components ▣ These components reduce much of the JavaScript required to make HTML appear dynamic
  • 56. Some of the Built-in Directive Components ▣ ng-repeat ▣ ng-show ▣ ng-hide ▣ ng-disabled ▣ ng-href ▣ ng-click ▣ ng-dbclick ▣ ng-mouseup ▣ ng-mouseover ▣ ng-focus ▣ ng-blur ▣ ...
  • 58. HTML Compiler ▣ Angular’s HTML compiler allows the developer to teach the browser new HTML syntax. ▣ The compiler allows you to attach behavior to any HTML element or attribute and even create new HTML elements or attributes with custom behavior. ▣ Angular calls these behavior extensions directives.
  • 59. How the HTML Compiler works ▣ Compiler is an angular service which traverses the DOM looking for attributes. ▣ The compilation process happens in two phases: □ Compile: traverse the DOM and collect all of the directives. The result is a linking function. □ Link: combine the directives with a scope and produce a live view.
  • 61. Thanks! Any questions? You can find me at: blog.avirancohen.com facebook.com/MEvsWEB