react vs angular: ups & downs (speaker oleksandr kovalov, binary studio)

66
Angular. React. ups & downs

Upload: binary-studio

Post on 16-Apr-2017

748 views

Category:

Software


1 download

TRANSCRIPT

Page 1: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular. React. ups & downs

Page 2: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Oleksandr KovalovFrontend DeveloperBinary Studio

Page 3: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Agenda1.Overview

2.Angular

3.React

4.ES2015

5.Angular 2

6.Dev Tools

7.Summary

Page 4: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

The most popular frameworks

Page 5: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular vs React

VS

Page 6: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Google trends

Page 7: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
Page 8: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
Page 9: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular.js

First version was created in 2009 as service for store data in JSON.

Created by Google

Page 10: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular.jsModule

Config

Routes

View Controller$scopeViewModel

Directives

Filter

Factory

Service

Provider

Value

Page 11: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Walk through Angular app architectureTemplates

Controllers

Services / Factories

Directives

Page 12: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular - Template

Page 13: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular - Controller

Page 14: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular - Service

Page 15: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Dirty checking - watchers etc.

Page 16: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular worldDependency Injection

Providers

Filters

Isolated Scope

Config

Events: $emit, $broadcast

Resources

Promises

Animation

Page 17: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular problems

Model

ViewController

Controller

Controller

Controller

View

View

View

View

Model

Model

Page 18: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

SummaryQuick creation of initial version of application

Many created directives

Problems with current state control

Page 19: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

React.JSReact was created by Jordan Walke, a

software engineer at Facebook

Become open-source in 2013

Page 20: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

React Component

Page 21: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Props and State

Page 22: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular, Ember and Knockout put “JS” in your HTML.

React puts “HTML” in your JS.

Cory House React’s JSX: The Other Side of the Coin

Single Responsibility Principle

Page 23: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

JSX● The same file for

code/template● XML-like syntax● Build components,

not templates. ○ Reusable○ Composable○ Unit testable

Page 24: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

React renderReact re-render entire component

Re-render on every change makes life simple

Declarative JSX

Re-render on every change? That seems expensive

http://www.slideshare.net/floydophone/react-preso-v2

Page 25: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

VirtualDOM

Reactive, Component-based UIs with React

Page 26: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

VirtualDOM

Page 27: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

ES 2015

Page 28: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

ES 2015

http://kangax.github.io/compat-table/es6/

Page 29: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Babel

Page 30: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Babel

Page 31: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

FluxAction

Dispatcher

Store

View

● Instead of MVC for React● Unidirectional data flow● Created by Facebook● Many stores

Store

Store

...

Page 32: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Redux● Evolution of Flux● One immutable state● Hot reload

View layer

Action

Dispatcher Store View

Provider Connect

Page 33: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Redux flow - StoreCreate store.

Connect store to Root element

Page 34: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Redux flow - Connect State/Actions to Components

Page 35: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Redux flow - Action

Whenever you want to change the state of the application, you shoot off an action.

Action function returns a formatted action object

Page 36: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Redux flow - Root ReducerCreation of Root reducer

Page 37: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Redux flow - ReducerEvery reducer:

receive state

return new state

Not mutated old state! new one!

Page 38: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

SummaryState changes only in reducers

Structured code

We have access to state in every moment

Page 39: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Let`s compare!Router

Form validation

HTTP handling

Page 40: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Router organisation - Angular

Page 41: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Router organisation - React

Page 42: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular validation

Property

Class Description

$valid ng-valid Boolean Tells whether an item is currently valid based on the rules you placed.

$invalid ng-invalid Boolean Tells whether an item is currently invalid based on the rules you placed.

$pristine ng-pristine

Boolean True if the form/input has not been used yet.

$dirty ng-dirty Boolean True if the form/input has been used.

$touched ng-touched

Boolean True if the input has been blurred.

Page 43: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

React validation (formsy-react)Validations list:

● matchRegexp● isEmail● isUrl● isExisty● isUndefined● isEmptyString● isTrue● isFalse● isAlpha● isNumeric● isAlphanumeric● isInt● isFloat● isWords● isSpecialWords● equals:value● equalsField:fieldName● isLength:length● minLength:length● maxLength:length

Page 44: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular $http Methods: ● .delete()● .get()● .head()● .jsonp()● .patch()● .post()● .put()

Response properties: ● .config ● .data ● .headers ● .status ● .statusText

Page 45: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular $resource

$resource(url, [paramDefaults], [actions], options);

A factory which creates a resource object that lets you interact with RESTful server-side data sources.

Page 46: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

React HTTP (superagent)

Response properties: ● .text● .body ● .header● .type● .status

Methods: ● .get()● .delete()● .head()● .post()● .put()

Page 47: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

OpinionUnix philosophy:

The philosophy of small, composable, single-purpose tools never goes out of style.

Angular 2 versus React: There Will Be Blood

Page 48: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Cook Angular React-way

Page 49: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular + React

+

Page 50: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Performance is not the reasonImprovements:

track by

Minimize watchers

:: one-time binding

debounce ng-model

ng-show/ng-if

use VanillaJS (native JavaScript)

Page 51: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Performance is not the reason

http://blog.500tech.com/is-reactjs-fast/

React Performance: http://speed.examples.500tech.com/ngrepeat/before/react.html

Angular before optimisation:http://speed.examples.500tech.com/ngrepeat/before/angular.html

Angular after optimisation:http://speed.examples.500tech.com/ngrepeat/after/angular.html

Page 52: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Performance is not the reason

React’s true strengths: composition, unidirectional data flow, freedom from DSLs, explicit mutation and static mental model.

Dan AbramovRedux Author

https://medium.com/@dan_abramov/youre-missing-the-point-of-react-a20e34a51e1a

Page 53: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Readability

To read Angular: Learn a long list of Angular-specific syntax.To read React: Learn JavaScript.

Angular 2 versus React: There Will Be Blood

Ember: {{# each}}Angular 1: ng-repeatAngular 2: ngForKnockout: data-bind=”foreach”React: JUST USE JS. :)

Page 54: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Who uses?Angular:

GoogleYoutube for PS3NikeGeneral MotorsGuardianWolphram alphaNBCIntel

React:FacebookInstagramAtlassianDropboxFlipboardIMDbNetflixPayPalWhatsApp

Page 55: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular 2.0

Page 56: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Angular 2.0

Page 57: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

TypeScript

Page 58: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

React Developer Tools

Page 59: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Redux DevTools https://github.com/gaearon/redux-devtools

Page 60: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

React Native

Page 61: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

React Native

2016

: The

Year

Rea

ct N

ativ

e Ea

ts M

obile

Dev

elop

men

t

Page 63: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Universal (Isomorphic) applications

https://react.rocks/tag/Isomorphic

Server Client

REST API, DB Access, etc.

Node.JS Browser

Universal JavaScript

HTML 5, DOM events, etc.

Page 64: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

SummaryReact + Redux:

VirtualDOM

Uni-directional data flow

Low entry barrier

Easily manageable state. Immutable.

React Native for mobile development

Server-/Client-side rendering

Angular:

Full-featured MV* framework

Fast to start-off

2-way binding

TypeScript (Angular 2)

Remember about optimization

Page 65: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

P.S.Looking to build something quickly that can be picked up by new

developers without long lead times? Pick Angular.

Building a long term project that requires a specific set of components and a componentized architecture? Pick React.

Prefer Angular? Pick Angular.

Prefer React? Pick React.Mike W.

Waracle Project ManagementAngular vs React

Page 66: React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)

Any questions?