63
@kylehodgson www.kylehodgson.com

Advanced AngularJS Concepts

Embed Size (px)

DESCRIPTION

Slides from my Advanced AngularJS Concepts talk at Prairie Developer Conference 2014

Citation preview

Page 1: Advanced AngularJS Concepts

@kylehodgson www.kylehodgson.com

Page 2: Advanced AngularJS Concepts
Page 3: Advanced AngularJS Concepts

+

Page 4: Advanced AngularJS Concepts

AngularJS

Architectural Advice

Page 5: Advanced AngularJS Concepts

Big Ball of Mud

Page 6: Advanced AngularJS Concepts

Avoid binding to functions

Page 7: Advanced AngularJS Concepts

DOM Manipulation

Page 8: Advanced AngularJS Concepts

Isolate Scope

Directives

Page 9: Advanced AngularJS Concepts

Isolate scope

Page 10: Advanced AngularJS Concepts

Isolate scope

Page 11: Advanced AngularJS Concepts

Isolate scope

←fail

Page 12: Advanced AngularJS Concepts

Isolate scope

← amaze

Page 13: Advanced AngularJS Concepts

Isolate scope: Attributes

Directives

Page 14: Advanced AngularJS Concepts

Isolate scope

Page 15: Advanced AngularJS Concepts

Isolate scope: attributes

← attribute

attribute

Page 16: Advanced AngularJS Concepts

Isolate scope: attributes

attribute

Page 17: Advanced AngularJS Concepts

Isolate scope: attributes

Page 18: Advanced AngularJS Concepts

Bindings

Isolate scope

Page 19: Advanced AngularJS Concepts

@:  attribute =:  binding &:  expression

Page 20: Advanced AngularJS Concepts

Expressions

Isolate scope

Page 21: Advanced AngularJS Concepts

Isolate scope: expressions

← expression

Page 22: Advanced AngularJS Concepts

Isolate scope: expressions

← expression

Page 23: Advanced AngularJS Concepts

Isolate scope: expressions

expression

Page 24: Advanced AngularJS Concepts

Isolate scope: expressions

Page 25: Advanced AngularJS Concepts

Isolate scope: expressions

Page 26: Advanced AngularJS Concepts

Accessibility AngularJS & the ADA

Page 27: Advanced AngularJS Concepts

ADA & AngularJS

“double you double you double you dot yahoo dot com slash is not available h t m l content search search ten percent text ten percent loaded”

Page 28: Advanced AngularJS Concepts

ADA & AngularJS

Consider not making an SPA

Page 29: Advanced AngularJS Concepts

ADA & AngularJS

Bake it in from the start

Page 30: Advanced AngularJS Concepts

ADA & AngularJS

Keep things simple

Page 31: Advanced AngularJS Concepts

Use ARIA Effectively

ADA & AngularJS

Page 32: Advanced AngularJS Concepts

Detection & Affordance

ADA & AngularJS

Page 33: Advanced AngularJS Concepts

ADA & AngularJS

Page 34: Advanced AngularJS Concepts

SEO Issues & solutions

Page 35: Advanced AngularJS Concepts

SEO & AngularJS

Page 36: Advanced AngularJS Concepts

SEO & AngularJS

Page 37: Advanced AngularJS Concepts

Duck Angular Angular Integration Testing

Page 38: Advanced AngularJS Concepts
Page 39: Advanced AngularJS Concepts

Duck Angular

Run it in Karma Get it with Bower bower install duck-angular

Page 40: Advanced AngularJS Concepts

Duck Angular & Karma

Page 41: Advanced AngularJS Concepts

Toy App: ToDontList Story Epic

As a busy executive with too much to do, I would like to see a list of things that are not worth my time,

So that I can avoid doing them.

Page 42: Advanced AngularJS Concepts
Page 43: Advanced AngularJS Concepts

App.js

Page 44: Advanced AngularJS Concepts
Page 45: Advanced AngularJS Concepts

Duck Angular: Bindings

Page 46: Advanced AngularJS Concepts

Duck Angular: Interactions

Page 47: Advanced AngularJS Concepts

Duck Angular: Directives

Page 48: Advanced AngularJS Concepts

Duck Angular: Bindings

Page 49: Advanced AngularJS Concepts

Anatomy of a Duck Angular spec

Duck Angular

Page 50: Advanced AngularJS Concepts
Page 51: Advanced AngularJS Concepts

End to End Testing AngularJS

Page 52: Advanced AngularJS Concepts

E2E

http://docs.angularjs.org/guide/e2e-testing

sic: ‘depricated’ is misspelled on angularjs.org

Page 53: Advanced AngularJS Concepts

Selenium

• Mature • Well understood •  “Enterprise strength” •  Terrible “SPA” support

Page 54: Advanced AngularJS Concepts

Protractor Functional Testing for AngularJS

https://github.com/angular/protractor

Page 55: Advanced AngularJS Concepts

Protractor

Not good (with) Karma.

Page 56: Advanced AngularJS Concepts

searches for elements by matching binding names, either from ng-bind or {{}} notation in the template

by.binding

Page 57: Advanced AngularJS Concepts

by.model

by.model searches for elements by input ng-model

Page 58: Advanced AngularJS Concepts
Page 59: Advanced AngularJS Concepts

by.repeater

by.repeater searches for ng-repeat elements.

Page 60: Advanced AngularJS Concepts
Page 61: Advanced AngularJS Concepts

Putting it all together

Page 62: Advanced AngularJS Concepts

Web server Selenium Java

Protractor pre-reqs

Page 63: Advanced AngularJS Concepts

Questions?

Kyle Hodgson www.kylehodgson.com @kylehodgson

Avishek “Mojo” Sen Gupta www.avishek.net @avisheksengupta

www.angularjs.org www.yearofmoo.com www.egghead.io www.pluralsight.com github.com/asengupta/duck-angular github.com/kylehodgson/angular-toy