Front-End Engineering 101

21
UI 2013 Milan Korsos useTallie.com - milankorsos.com Febr 2013

description

A quick intro to Front End Engineering in 2013. JavaScript vs CoffeeScript, JS Frameworks, Knockout.js, Backbone.js, CSS, LESS, Bootstrap, Browsers, UI Testing, Jasmine BDD, Cucumber, HTML5, Event Driven JavaScript, D3 www.usetallie.com

Transcript of Front-End Engineering 101

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