Top Banner
The Beauty of JavaScript Mike Girouard | AjaxWorld 2008 { }
77

The Beauty Of Java Script V5a

May 13, 2015

Download

Technology

rajivmordani
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The Beauty Of Java Script V5a

The Beauty of JavaScript

Mike Girouard | AjaxWorld 2008

{ }

Page 2: The Beauty Of Java Script V5a

Hello.

Page 3: The Beauty Of Java Script V5a

I am a

Back-end guy in a front-end guy’s clothes

Sr. Developer at Magnani Caruso Dutton

JavaScript hacker since ’99

JavaScript developer/evangelist since ’07

Speaker: lovemikeg.com/talks

Blogger: lovemikeg.com/blog

Page 4: The Beauty Of Java Script V5a

I’d like to talk about a language like no other.

Page 5: The Beauty Of Java Script V5a

JavaScript’s core is built on top of many genius ideas.

Page 6: The Beauty Of Java Script V5a

JavaScript offers classless OOP.

Page 7: The Beauty Of Java Script V5a

JavaScript is a functional language.

Page 8: The Beauty Of Java Script V5a

JavaScript runs on the client-side & server-side.

Page 9: The Beauty Of Java Script V5a

Many brilliant engineers have contributed to JavaScript.

Page 10: The Beauty Of Java Script V5a

Unfortunately mouse trails left some nasty scars.

Page 11: The Beauty Of Java Script V5a

Despite it’s !aws, many beautiful features exist.

Page 12: The Beauty Of Java Script V5a

JavaScript resembles C & Java.

Page 13: The Beauty Of Java Script V5a

foo.bar = ‘baz’;

Page 14: The Beauty Of Java Script V5a

if (foo < bar) { // do something}

Page 15: The Beauty Of Java Script V5a

for (i = 0; i < n; i++) { // do something}

Page 16: The Beauty Of Java Script V5a

while (i < n) { // do something}

Page 17: The Beauty Of Java Script V5a

do { // something} while (i < n);

Page 18: The Beauty Of Java Script V5a

Everything is literal.

Page 19: The Beauty Of Java Script V5a

var name = ‘Mike G.’;

Page 20: The Beauty Of Java Script V5a

var age = 25;

Page 21: The Beauty Of Java Script V5a

var canDrink = true;

Page 22: The Beauty Of Java Script V5a

var colors = [‘red’, ‘green’, ‘blue’];

Page 23: The Beauty Of Java Script V5a

var hexColors = { ‘red’ : 0xFF0000, ‘green’ : 0x00FF00, ‘blue’ : 0x0000FF};

Page 24: The Beauty Of Java Script V5a

var rgbColors = { ‘red’ : [255, 0, 0], ‘green’ : [0, 255, 0], ‘blue’ : [0, 0, 255]};

Page 25: The Beauty Of Java Script V5a

Subscript notation is bad ass.

Page 26: The Beauty Of Java Script V5a

(foo.bar === foo[‘bar’])

Page 27: The Beauty Of Java Script V5a

var callbacks = { ‘#login-form’ : function () { // code to validate a login },

‘#print-btn’ : window.print};

Page 28: The Beauty Of Java Script V5a

Functions are objects.

Page 29: The Beauty Of Java Script V5a

var foo = function () { return ++foo.counter;};

foo.counter = 0;

Page 30: The Beauty Of Java Script V5a

JavaScript is functional.

Page 31: The Beauty Of Java Script V5a

var foo = function () { // do something};

Page 32: The Beauty Of Java Script V5a

var id = function () { console.log(this.id);};

lib.addEvent(foo, ‘click’, id);lib.addEvent(bar, ‘click’, id);

Page 33: The Beauty Of Java Script V5a

mouseLib.rollOver( ‘some-element’, function () { this.src = ‘on.jpg’; }, function () { this.src = ‘off.jpg’; });

Page 34: The Beauty Of Java Script V5a

(function () {

// do something

})();

Page 35: The Beauty Of Java Script V5a

var outer, inner;

outer = function () { var counter = 0;

inner = function () { return ++counter; };

return counter;};

Page 36: The Beauty Of Java Script V5a

Inheritance is achieved through prototypes.

Page 37: The Beauty Of Java Script V5a

var Foo, Bar;

Foo = function () {};Foo.prototype.bar = 123;

Bar = function () {};Bar.prototype = new Foo;Bar.prototype.bar = 456;

Page 38: The Beauty Of Java Script V5a

Don’t forget about Ajax.

Page 39: The Beauty Of Java Script V5a

var xhr;

xhr = new XMLHttpRequest;xhr.onreadystatechange = function (event) { if (xhr.readyState === 4) { console.log(xhr.responseText); };};

xhr.open(‘GET’,document.location.href,true);xhr.send(null);

Page 40: The Beauty Of Java Script V5a

JavaScript is available of!ine.

Page 41: The Beauty Of Java Script V5a
Page 42: The Beauty Of Java Script V5a
Page 43: The Beauty Of Java Script V5a
Page 44: The Beauty Of Java Script V5a
Page 45: The Beauty Of Java Script V5a

Expressive code breeds beautiful patterns.

Page 46: The Beauty Of Java Script V5a

Self-invocation creates scope.

Page 47: The Beauty Of Java Script V5a

var foo = ‘bar’;var baz = ‘bif’;

Page 48: The Beauty Of Java Script V5a

(function () {

var foo = ‘bar’; var baz = ‘bif’;

})();

Page 49: The Beauty Of Java Script V5a

Load-time de"nition/branching saves trees.

Page 50: The Beauty Of Java Script V5a

var addEvent = (function () { if (window.addEventListener) { return addW3Event; } else if (window.attachEvent) { return addExplorerEvent; } else { return addLegacyEvent; }})();

Page 51: The Beauty Of Java Script V5a

var getXHR = (function () { if (window.XMLHttpRequest) { return getW3XHR; } else if (window.ActiveXObject) { return getExplorerXHR; } else { throw ‘No XHR Support.’; }})();

Page 52: The Beauty Of Java Script V5a

The Module enables private members.

Page 53: The Beauty Of Java Script V5a

var my.lib = (function () {

var $ = document.getElementById; var cache = {};

return { getElement : function (id) { // do something } };

})();

Page 54: The Beauty Of Java Script V5a

Lazy function de"nition saves even more trees.

Page 55: The Beauty Of Java Script V5a

var getResource = function () {    var resource, counter;

    resource = ‘foo’;    counter = 0;    getResource = function () {        return resource + ‘ has been accessed ’ + (++counter) + ‘ times’;    };    return getResource();};

Page 56: The Beauty Of Java Script V5a

Fragment templates create DOM nodes.

Page 57: The Beauty Of Java Script V5a

var getEmailTemplate = function () { var email, link, check; email = document.createElement(‘div’); link = document.createElement(‘a’); check = document.createElement(‘input’); email.className = ‘email-item’; email.appendChild(check); email.appendChild(link); return function () { return email.cloneNode(true); };}();

Page 58: The Beauty Of Java Script V5a

Node registries keep DOM nodes organized.

Page 59: The Beauty Of Java Script V5a

var d = document;var byId = d.getElementById;var byTag = d.getElementsByTagName;

var elements = { ‘foo’ : byId(‘foo’), ‘bar’ : byId(‘foo’).byTag(‘bar’)[0], ‘links’ : byTag(‘a’)};

Page 60: The Beauty Of Java Script V5a

Libraries make beautiful abstractions.

Page 61: The Beauty Of Java Script V5a

Prototype by Sam Stephenson.

Page 62: The Beauty Of Java Script V5a

$(…)

Page 63: The Beauty Of Java Script V5a

$$(…) $A(…) $F(…)

$H(…) $R(…) $w(…)

Page 64: The Beauty Of Java Script V5a

jQuery by John Resig

Page 65: The Beauty Of Java Script V5a

$(…)

Page 66: The Beauty Of Java Script V5a

$(‘#print’).click(function () {

$(this).addClass(‘printed’); window.print();

});

Page 67: The Beauty Of Java Script V5a

YUI by Yahoo!

Page 68: The Beauty Of Java Script V5a

YAHOOYAHOO.util.DomYAHOO.util.Event

Page 69: The Beauty Of Java Script V5a

YAHOO.namespace(‘mikeg’);YAHOO.mikeg = (function () {

var $ = YAHOO.util.Dom.get; var $$ = YAHOO.util.Selector.query;

// do stuff

})();

Page 70: The Beauty Of Java Script V5a

It’s up to us to keep JavaScript Beautiful.

Page 71: The Beauty Of Java Script V5a

Listen to Doug.

Page 72: The Beauty Of Java Script V5a

Pick a library, any library.

Page 73: The Beauty Of Java Script V5a

Protect the global object.

Page 74: The Beauty Of Java Script V5a

Use *Lint.

Page 75: The Beauty Of Java Script V5a

Use *Unit.

Page 76: The Beauty Of Java Script V5a

Educate others.

Page 77: The Beauty Of Java Script V5a

Thank [email protected]