Migrating from AngularJS when you can't use the word "Big Bang@

Preview:

Citation preview

How to migrate from AngularJS

When you can’t use the word “Big Bang”

?

How is this structured?

• Mental Model• Plan• Case Study

How is this structured?

https://github.com/codecraftpro/angularjs-migration-workshop

How is this structured?

Who am I?

Asim Hussain@jawache

asim@codecraft.tv

Angular:From Theory to Practice

angular.codecraft.tv

Kickstarter Funded - FREE

angular.codecraft.tv — @jawache

Terminology

angular.codecraft.tv — @jawache

Angular = Angular 4+

angular.codecraft.tv — @jawache

AngularJS = Angular 1.x

angular.codecraft.tv — @jawache

Filters = Pipes

angular.codecraft.tv — @jawache

Controllers = Components

angular.codecraft.tv — @jawache

Directives + HTML = Components

angular.codecraft.tv — @jawache

Directives - HTML = Directives

angular.codecraft.tv — @jawache

Service/Factory = Service

angular.codecraft.tv — @jawache

Entity?

angular.codecraft.tv — @jawache

Angular is BLUEAngularJS is RED

angular.codecraft.tv — @jawache

DEMO

ui-router

angular.codecraft.tv — @jawache

Mental Model

angular.codecraft.tv — @jawache

Dual Booting

angular.codecraft.tv — @jawache

Service

ListCard

Spinner

ResourceEdit

Create

Search

JS

angular.codecraft.tv — @jawache

Service

ListCard

Spinner

ResourceEdit

Create

Search

JS

4+angular.codecraft.tv — @jawache

Service

ListCard

Spinner

ResourceEdit

Create

Search

JS

4+angular.codecraft.tv — @jawache

Zones ➡ $scope.$apply(…)

angular.codecraft.tv — @jawache

Chameleon

angular.codecraft.tv — @jawache

List

List

AngularJS

DowngradedAngular

Angular

UpgradedAngularJS List ⬆

List ⬇

Service ⬇

List

Edit

Service

angular.codecraft.tv — @jawache

Control Freak

angular.codecraft.tv — @jawache

<card>

<body>

<spinner>

<card>

<body>

<spinner>

<card> ⬇

<body>

<spinner>

<body>

<spinner> ⬆

<card> ⬇

Root Component is AngularJS

angular.codecraft.tv — @jawache

Plague

angular.codecraft.tv — @jawache

Service

ListCard

Spinner

Edit

Create

Search

JS

4+

Resource ⬇

Service ⬇

ListCard

Spinner

Edit

Create

Search

JS

4+

Resource

Service ⬇

ListCard ⬇

Spinner

Edit

Create

Search

JS

4+

Resource

Service ⬇

ListCard ⬇

Spinner ⬇

Edit

Create

Search

JS

4+

Resource

Service ⬇

List ⬇Card

Spinner

Edit

Create

Search

JS

4+

Resource

Service

List ⬇Card

Spinner

Edit ⬇

Create ⬇

Search ⬇

JS

4+

Resource

Service

ListCard

Spinner

Edit

Create

Search

4+Resource

But…

• Filters• (some) Directives

10 Step Plan

angular.codecraft.tv — @jawache

1. Style guide2. TypeScript & build tools3. AngularJS 1.5+4. Component’ify5. ES6’ify6. Dual Boot7. Services to Angular 8. Components to Angular9. Routing to Angular10.Remove AngularJS

angular.codecraft.tv — @jawache

1. Style guide2. TypeScript & build tools3. AngularJS 1.5+4. Component’ify5. ES6’ify6. Dual Boot7. Services to Angular8. Components to Angular9. Routing to Angular10.Remove AngularJS

angular.codecraft.tv — @jawache

Top Tips!

Start with the Router

angular.codecraft.tv — @jawache

CODE!

1. Style guide2. TypeScript & build tools3. AngularJS 1.5+4. Component’ify5. ES6’ify6. Dual Boot7. Services to Angular8. Components to Angular9. Routing to Angular10.Remove AngularJS

angular.codecraft.tv — @jawache

Top Tips!

Start with the Service/Factories

angular.codecraft.tv — @jawache

$resource use $http

angular.codecraft.tv — @jawache

.factory(..) use .service(..)

angular.codecraft.tv — @jawache

$q use Promise

angular.codecraft.tv — @jawache

angular.forEach use for…of

angular.codecraft.tv — @jawache

CODE!

1. Style guide2. TypeScript & build tools3. AngularJS 1.5+4. Component’ify5. ES6’ify6. Dual Boot7. Services to Angular8. Components to Angular9. Routing to Angular10.Remove AngularJS

angular.codecraft.tv — @jawache

Service

ListCard

Spinner

ResourceEdit

Create

Search

JS

angular.codecraft.tv — @jawache

Service

ListCard

Spinner

ResourceEdit

Create

Search

JS

4+angular.codecraft.tv — @jawache

Top Tips!

Remove ng-app

angular.codecraft.tv — @jawache

CODE!

1. Style guide2. TypeScript & build tools3. AngularJS 1.5+4. Component’ify5. ES6’ify6. Dual Boot7. Services to Angular 8. Components to Angular9. Routing to Angular10.Remove AngularJS

angular.codecraft.tv — @jawache

Service ⬇

ListCard

Spinner

Edit

Create

Search

JS

4+

Resource

angular.codecraft.tv — @jawache

Top Tips!

• Re-write• Find• Upgrade

angular.codecraft.tv — @jawache

CODE!

1. Style guide2. TypeScript & build tools3. AngularJS 1.5+4. Component’ify5. ES6’ify6. Dual Boot7. Services to Angular 8. Components to Angular9. Routing to Angular10.Remove AngularJS

angular.codecraft.tv — @jawache

Service ⬇

ListCard ⬇

Spinner ⬇

Edit

Create

Search

JS

4+

Resource

angular.codecraft.tv — @jawache

Service ⬇

List ⬇Card

Spinner

Edit

Create

Search

JS

4+

Resource

angular.codecraft.tv — @jawache

Service ⬇

List ⬇Card

Spinner

Edit ⬇

Create

Search

JS

4+

Resource

angular.codecraft.tv — @jawache

CODE!

1. Style guide2. TypeScript & build tools3. AngularJS 1.5+4. Component’ify5. ES6’ify6. Dual Boot7. Services to Angular8. Components to Angular9. Routing to Angular10.Remove AngularJS

angular.codecraft.tv — @jawache

Tiny Pop

• Bootstrap with Angular• Angular Router

angular.codecraft.tv — @jawache

CODE!

1. Style guide2. TypeScript & build tools3. AngularJS 1.5+4. Component’ify5. ES6’ify6. Dual boot7. Services to Angular8. Components to Angular9. Routing to Angular10.Remove AngularJS

angular.codecraft.tv — @jawache

Service

ListCard

Spinner

Edit

Create

Search

4+Resource

angular.codecraft.tv — @jawache

Finished

Questions?

asim@codecraft.tv@jawache

github.com/jawache/ama