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

The Beauty of Java Script

May 11, 2015

Download

Technology

Given at AjaxWorld West 2008.
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

The Beauty of JavaScript

Mike Girouard | AjaxWorld 2008

{ }

Page 2: The Beauty of Java Script

Hello.

Page 3: The Beauty of Java Script

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

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

Page 5: The Beauty of Java Script

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

Page 6: The Beauty of Java Script

JavaScript offers classless OOP.

Page 7: The Beauty of Java Script

JavaScript is a functional language.

Page 8: The Beauty of Java Script

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

Page 9: The Beauty of Java Script

Many brilliant engineers have contributed to JavaScript.

Page 10: The Beauty of Java Script

Unfortunately mouse trails left some nasty scars.

Page 11: The Beauty of Java Script

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

Page 12: The Beauty of Java Script

JavaScript resembles C & Java.

Page 13: The Beauty of Java Script

foo.bar = ‘baz’;

Page 14: The Beauty of Java Script

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

Page 15: The Beauty of Java Script

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

Page 16: The Beauty of Java Script

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

Page 17: The Beauty of Java Script

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

Page 18: The Beauty of Java Script

Everything is literal.

Page 19: The Beauty of Java Script

var name = ‘Mike G.’;

Page 20: The Beauty of Java Script

var age = 25;

Page 21: The Beauty of Java Script

var canDrink = true;

Page 22: The Beauty of Java Script

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

Page 23: The Beauty of Java Script

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

Page 24: The Beauty of Java Script

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

Page 25: The Beauty of Java Script

Subscript notation is bad ass.

Page 26: The Beauty of Java Script

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

Page 27: The Beauty of Java Script

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

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

Page 28: The Beauty of Java Script

Functions are objects.

Page 29: The Beauty of Java Script

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

foo.counter = 0;

Page 30: The Beauty of Java Script

JavaScript is functional.

Page 31: The Beauty of Java Script

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

Page 32: The Beauty of Java Script

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

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

Page 33: The Beauty of Java Script

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

Page 34: The Beauty of Java Script

(function () {

// do something

})();

Page 35: The Beauty of Java Script

var outer, inner;

outer = function () { var counter = 0;

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

return counter;};

Page 36: The Beauty of Java Script

Inheritance is achieved through prototypes.

Page 37: The Beauty of Java Script

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

Don’t forget about Ajax.

Page 39: The Beauty of Java Script

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

JavaScript is available of!ine.

Page 41: The Beauty of Java Script
Page 42: The Beauty of Java Script
Page 43: The Beauty of Java Script
Page 44: The Beauty of Java Script
Page 45: The Beauty of Java Script

Expressive code breeds beautiful patterns.

Page 46: The Beauty of Java Script

Self-invocation creates scope.

Page 47: The Beauty of Java Script

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

Page 48: The Beauty of Java Script

(function () {

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

})();

Page 49: The Beauty of Java Script

Load-time de"nition/branching saves trees.

Page 50: The Beauty of Java Script

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

Page 51: The Beauty of Java Script

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

The Module enables private members.

Page 53: The Beauty of Java Script

var myLib = (function () {

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

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

})();

Page 54: The Beauty of Java Script

Lazy function de"nition saves even more trees.

Page 55: The Beauty of Java Script

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

Fragment templates create DOM nodes.

Page 57: The Beauty of Java Script

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

Node registries keep DOM nodes organized.

Page 59: The Beauty of Java Script

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

Libraries make beautiful abstractions.

Page 61: The Beauty of Java Script

Prototype by Sam Stephenson.

Page 62: The Beauty of Java Script

$(…)

Page 63: The Beauty of Java Script

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

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

Page 64: The Beauty of Java Script

jQuery by John Resig

Page 65: The Beauty of Java Script

$(…)

Page 66: The Beauty of Java Script

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

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

});

Page 67: The Beauty of Java Script

YUI by Yahoo!

Page 68: The Beauty of Java Script

YAHOOYAHOO.util.DomYAHOO.util.Event

Page 69: The Beauty of Java Script

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

It’s up to us to keep JavaScript Beautiful.

Page 71: The Beauty of Java Script

Listen to Doug.

Page 72: The Beauty of Java Script

Pick a library, any library.

Page 73: The Beauty of Java Script

Protect the global object.

Page 74: The Beauty of Java Script

Use *Lint.

Page 75: The Beauty of Java Script

Use *Unit.

Page 76: The Beauty of Java Script

Educate others.

Page 77: The Beauty of Java Script

Be careful. JavaScript is not secure.

Page 78: The Beauty of Java Script

Thank [email protected]

Page 79: The Beauty of Java Script

Oh yeah, we’re [email protected]