Download - Front-End Engineering 101

Transcript
Page 1: Front-End Engineering 101

UI 2013Milan Korsos

useTallie.com - milankorsos.com

Febr 2013

Page 2: Front-End Engineering 101

What’s up?

The Language Of The Web

The Frameworks

CSS is fun?!

Btw, Browsers?

QA != Farmville

Cool Stuff

Page 3: Front-End Engineering 101

JavaScript

No longer ‘hide-this-div-then-animate-that’

De-facto language of the web

Hard challenges for large scale apps

JS as a runtime environment?

Page 4: Front-End Engineering 101

CoffeeScript - The Awesome

Compiles to JavaScript

You can still use any of the JS libraries

Encourages good JS patterns

Makes JS code shorter and more readable

Compilation and debugging can be a pain

Page 7: Front-End Engineering 101

Backbone.js

Provides REST-persistable models

With strong client side routing solution

Does nothing towards automated UI sync

Model, Collection, View, Router

Page 8: Front-End Engineering 101

Knockout.js

Focuses on automated UI bindings

Developer writes the models

No routing (eg. Crossroads.js, Sammy.js)

Observables, ObservableArrays

Page 9: Front-End Engineering 101

Meteor & Ember.js

MeteorCrazy amazing framework from the future

Bridges the server side runtime with client side

Ember.jsBiggest framework with the most functionality

Ember makes all the common solutions

Page 10: Front-End Engineering 101

CSS can be FUN

LESS, SASS Meta languages interpreted to CSS

Variables, Mixins, Nested rules, Functions & Operations

An Introduction To LESS, And Comparison To Sass

Twitter Bootstrap Toolkit for kickstarting CSS for websites and web apps

Page 11: Front-End Engineering 101

Btw, Browsers?

Page 12: Front-End Engineering 101

IE <3

IE6, IE7: expensive to optimize, small user base

IE8: Windows XP users who cannot update to IE9

IE9: Lack of HTML5 support

IE10: Sucks less? Still in beta..

IE Dev Tools: painful compared to Chrome, Safari or Firefox

Page 13: Front-End Engineering 101

QA != Farmville

Manual testing

Automated UI testing

UI Unit Testing

JS Runtime Error Tracking http://errorception.com

Page 14: Front-End Engineering 101

Automated UI Testing

If a bug pops up, add as a step to a scenario

Run them daily on every browsers

Run the related scenarios before check in

Cucumber framework integrated to CI http://cukes.info

Page 15: Front-End Engineering 101

JavaScript Unit Testing

Jasmine BDD framework

Testing the Models and Lists

Integrated to CI

Sinon.js library

Stubs, spys, faking, mocking, etc

Page 16: Front-End Engineering 101

Cool Stuff

HTML5

Event driven programming

Measure all the things!

D3.js

Page 17: Front-End Engineering 101

HTML5

Actually there are useful and working APIs! Drag And Drop API: even IE supports it

File API: For file management. IE? Nope

History API: History manipulation. IE? Nope

Local Storage API: IE8+

http://www.html5rocks.com http://diveintohtml5.info

Page 19: Front-End Engineering 101

Measure All The Things

Measure users, trends and performance Google Analytics

New Relic

KISSmetrics

Errorception

Optimizely, Chartbeat, etc...

Page 20: Front-End Engineering 101

D3.js - The Chart Tool

Manipulating documents based on datahttps://github.com/mbostock/d3/wiki/Gallery

Tons of charting libraries based on D3NVD3.js - Reusable charts for d3.js

Page 21: Front-End Engineering 101