DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine...

26
MOBILE APPLICATION DEVELOPMENT DANIEL GRAHAM PHD

Transcript of DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine...

Page 1: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

M O B I L E A P P L I C AT I O N D E V E L O P M E N T

D A N I E L G R A H A M P H D

Page 2: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

T H R E E M A J O R C O M P E T I T O R S

Page 3: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

W R I T E O N C E R U N E V E R Y W H E R E

Page 4: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

R E A C T N AT I V E S E E M S T O B E W I N N I N G

Page 5: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

O V E R V I E W O F T H E C L A S S

• INTROUCTION TO FUNCTIONAL PROGRAMMING

• Javascript (Deep Dive)

• APPLICATION ARCHITECTURE

• Functional Components

• Class-based Component

• DATA FLOW ARCHITECTURE

• Redux /Flux

• Real-time No SQL Databases: Collections and Documents

• Pub/Suv Architecture

Page 6: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T

• JAVASCRIPT is interpreted and dynamically typed

• Conforms to the ECMAScript standard that was original developed by oracle Latest release June 2018.

• https://www.youtube.com/watch?v=0opjPdK55QA Brain Terlson

• https://github.com/tc39

• Each browser has it’s own javascript engine

• Chrome: V8

• Firefox: Spider Monkey

• Internet Explorer: Chakra

• Also transpilers that go

ECMAScript

Javascript Actionscript

Google App Script

Typescript /Coffee Script to Javascript

Page 7: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T S Y N TA X

• Live Coding Session

• Chrome developer console (Right Click Inspect)

• Node command line

Page 8: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T S Y N TA X VA R I A B L E S

const name = "Daniel" console.log(name)

var name = "Daniel" console.log(name)

let name = "Daniel" console.log(name)

W H AT I S D I F F E R E N C E B E T W E E N VA R A N D L E T

name = "Daniel" console.log(name)

S A M E A S T H E L E T D E C L A R AT I O N

I M M U TA B L E

Page 9: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T S Y N TA X VA R I A B L E S

const name = "Daniel" console.log(name)

name = “Daniel”; console.log(name)

S E M I C O L O N S A R E O P T I O N A L I N J AVA S C R I P T

Page 10: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T L E T V S VA R

for (i = 0; i < 5; i++) { let count = i; } console.log(count)

P R I N T 5 P R I N T S N O T H I N G

for (i = 0; i < 5; i++) { var count = i; } console.log(count)

Page 11: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

T Y P E S I N J AVA S C R I P T

• Remember Javascript is dynamically types

• There are 5 primitive types (which are immutable)

• typeof 5

• typeof “test”

• typeof true

• typeof null (Strange behavior returns type object)

N U M B E R

S T R I N G

B O O L E A N

NULL

U N D E F I N E D

• All other values are objects

Page 12: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T L E T V S VA R

var name = "Daniel"

Block scope

console.log(name)

Prints: Daniel

let name = "Daniel"

Block scope

console.log(name)

Prints:

L E X I C A L S C O P I N G

Page 13: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T S Y N TA X O P E R AT O R S

"A" === "\u0041"\ U A L L O W S Y O U S P E C I F Y T H E

U N I C O D E VA L U E A N D = = = I S U S E F O R C O M PA R I S O N True

"A" !== "\u0041"

False

Page 14: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T = = = V S = =

5 == "5" T R U E

0 == false T R U E

5 === "5" FA L S E

0 === false FA L S E

Why is this happening?

Type coercion." \n\n" == 0 T R U E

" \n\n" === 0 FA L S E

What is type coercion?

Page 15: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T S Y N TA X C O E R C I O N

• Type Coercion is similar to type casting:

• Converting from type to another.

• There are two types implicit and explicit conversion

Page 16: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

J AVA S C R I P T S Y N TA X C O E R C I O N

let x = 3 let y = "3" console.log(x + y)

let x = 3 let y = "3" console.log(String(x) + y)

I M P L I C I T C O N V E R S I O N

E X P L I C I T C O N V E R S I O N

Page 17: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

F U N C T I O N S I N J AVA S C R I P T

Page 18: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

– D O U G L A S C R O C K F O R D

“The Best thing about Javascript is its implementation of functions.”

Page 19: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

C R E AT I N G A S I M P L E F U N C T I O N

function grow (last, increase){ return last*(1+increase) }

W H E N F U N C T I O N S A R E D E C L A R E D O U T S I D E O F T H E S C O P E O F C L A S S W E N E E D T H E F U N C T I O N K E Y W O R D

console.log(grow(0.7, 0.1))

N A M E D F U N C T I O N

P R I N T S 0 . 7 7

Page 20: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

F U N C T I O N S A R E O B J E C T S

S I N C E F U N C T I O N S A R E O B J E C T S T H E Y C A N B E U S E D L I K E O T H E R O B J E C T S

Since this is an assignment statement you may sometimes see ; at the end

But ; aren’t necessary

career = function grow (lastyear, increase){ return last*(1+increase) };

console.log(career(0.7, 0.1))

Page 21: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

A N O N Y M O U S F U N C T I O N S

career = function(last, increase){ return last*(1+increase) }

console.log(career(0.7, 0.1))

A N O N Y M O U S F U N C T I O N S

N O N A M E

Page 22: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

T H E D E FA U LT A R G U M E N T PA R A M E T E R S

sum = function(){ let i , sum = 0 for(i = 0; i < arguments.length; i+=1){ sum += arguments[i] } return sum }

console.log('The sum was ' + sum(1,2,3,4,5))

P R I N T S 1 5

The arguments variable contains an array of all of the arguments passed to the function

M U LT I P L E VA R I A B L E D E C L A R AT I O N S

Page 23: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

A R R O W F U N C T I O N S

Page 24: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

A R R O W F U N C T I O N S

let func = (arg1, arg2, ...argN) => expression

let func = function(arg1, arg2, ...argN) { return expression; }

General Form of

Page 25: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

A R R O W F U N C T I O N S

multiply = (a, b) => a * b

//Equivalent to

multiply2 = function(a, b){ return a * b }

S I N G L E L I N E A R R O W F U N C T I O N T H E VA L U E O F T H E E X P R E S S I O N

I S R E T U R N E D B Y D E FA U LT

square = a => multiply(a, a) Single parameters

don’t require brackets

Page 26: DANIEL GRAHAM PHD MOBILE APPLICATION DEVELOPMENT• Each browser has it’s own javascript engine • Chrome: V8 • Firefox: Spider Monkey • Internet Explorer: Chakra • Also transpilers

M U LT I P L E L I N E A R R O W F U N C T I O N S

(a, b) =>{ if (a >= b){ return a }else{ return b } }

bigger = (a, b) =>{ return a>=b ? a : b }

console.log(bigger(1, 3))

A R R O W F U N C T I O N S C A N B E A N O N Y M O U S