enterprise javascriptsession2

177
Enterprise JavaScript Session 2 - Building Applications Wednesday, November 7, 12

Upload: troy-miles

Post on 27-Jan-2015

114 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Enterprise javascriptsession2

Enterprise JavaScriptSession 2 - Building Applications

Wednesday, November 7, 12

Page 2: Enterprise javascriptsession2

Hi, I’m Troy

Wednesday, November 7, 12

Page 3: Enterprise javascriptsession2

Hi, I’m Troy

• Developing software Since 1979

• Initially Game Software in Assembly (6502 and x86)

• Currently JavaScript, C#, Java, Objective-C

[email protected]

Wednesday, November 7, 12

Page 4: Enterprise javascriptsession2

jssaturday.comNov. 10th, Long Beach Convention

CenterDiscount code: RiaConsultingLLC

Save $65!!!

Wednesday, November 7, 12

Page 5: Enterprise javascriptsession2

Today’s Agenda

Wednesday, November 7, 12

Page 6: Enterprise javascriptsession2

Today’s Agenda

• Namespacing

Wednesday, November 7, 12

Page 7: Enterprise javascriptsession2

Today’s Agenda

• Namespacing

• Design Patterns

Wednesday, November 7, 12

Page 8: Enterprise javascriptsession2

Today’s Agenda

• Namespacing

• Design Patterns

• Performance

Wednesday, November 7, 12

Page 9: Enterprise javascriptsession2

Today’s Agenda

• Namespacing

• Design Patterns

• Performance

• Debugging

Wednesday, November 7, 12

Page 10: Enterprise javascriptsession2

Namespacing

Wednesday, November 7, 12

Page 11: Enterprise javascriptsession2

NamespacingNamespacing is a technique employed to avoid collisions with other objects or variables in the global namespace. They're also extremely useful for helping organize blocks of functionality in your application into easily manageable groups that can be uniquely identified.

-- Addy Osmani

Wednesday, November 7, 12

Page 12: Enterprise javascriptsession2

Hands-on Exercise

Wednesday, November 7, 12

Page 13: Enterprise javascriptsession2

Hands-on Exercise

• In jsFiddle.net

Wednesday, November 7, 12

Page 14: Enterprise javascriptsession2

Hands-on Exercise

• In jsFiddle.net

• Create a global var named “myApp”

Wednesday, November 7, 12

Page 15: Enterprise javascriptsession2

Hands-on Exercise

• In jsFiddle.net

• Create a global var named “myApp”

• If it has been defined already, make it equal to its previous instance

Wednesday, November 7, 12

Page 16: Enterprise javascriptsession2

Hands-on Exercise

• In jsFiddle.net

• Create a global var named “myApp”

• If it has been defined already, make it equal to its previous instance

• If it hasn’t been defined, make it equal to an empty object literal

Wednesday, November 7, 12

Page 17: Enterprise javascriptsession2

Answers

Wednesday, November 7, 12

Page 18: Enterprise javascriptsession2

Answers1. var myApp = myApp || {};

Wednesday, November 7, 12

Page 19: Enterprise javascriptsession2

Answers1. var myApp = myApp || {};

2. if(!myApp) myApp = {};

Wednesday, November 7, 12

Page 20: Enterprise javascriptsession2

Answers1. var myApp = myApp || {};

2. if(!myApp) myApp = {};

3. myApp || (myApp = {});

Wednesday, November 7, 12

Page 21: Enterprise javascriptsession2

Answers1. var myApp = myApp || {};

2. if(!myApp) myApp = {};

3. myApp || (myApp = {});

4. var myApp = myApp === undefined ? {} : myApp;

Wednesday, November 7, 12

Page 22: Enterprise javascriptsession2

Namespaces

Wednesday, November 7, 12

Page 23: Enterprise javascriptsession2

Namespaces

• Single global variables

Wednesday, November 7, 12

Page 24: Enterprise javascriptsession2

Namespaces

• Single global variables

• Object literal notation

Wednesday, November 7, 12

Page 25: Enterprise javascriptsession2

Namespaces

• Single global variables

• Object literal notation

• Nested namespacing

Wednesday, November 7, 12

Page 26: Enterprise javascriptsession2

Namespaces

• Single global variables

• Object literal notation

• Nested namespacing

• Immediately-Invoked Function Expressions

Wednesday, November 7, 12

Page 27: Enterprise javascriptsession2

Namespaces

• Single global variables

• Object literal notation

• Nested namespacing

• Immediately-Invoked Function Expressions

• Namespace Injection

Wednesday, November 7, 12

Page 28: Enterprise javascriptsession2

Single Global Variable

Wednesday, November 7, 12

Page 29: Enterprise javascriptsession2

Single Global Variable

• The entire application goes into a single global object, usually a function

Wednesday, November 7, 12

Page 30: Enterprise javascriptsession2

Single Global Variable

• The entire application goes into a single global object, usually a function

• An object literal is returned by the function

Wednesday, November 7, 12

Page 31: Enterprise javascriptsession2

Single Global Variable

• The entire application goes into a single global object, usually a function

• An object literal is returned by the function

• Not well suited for team development since not easily decomposed

Wednesday, November 7, 12

Page 32: Enterprise javascriptsession2

Single Global Variablevar myApplication = (function(){ function() { /*...*/ }, return{ /*...*/ };})();

Wednesday, November 7, 12

Page 33: Enterprise javascriptsession2

Object Literal Notation

Wednesday, November 7, 12

Page 34: Enterprise javascriptsession2

Object Literal Notation

• Doesn’t pollute the global namespace

Wednesday, November 7, 12

Page 35: Enterprise javascriptsession2

Object Literal Notation

• Doesn’t pollute the global namespace

• Assist in organizing code into logical parts

Wednesday, November 7, 12

Page 36: Enterprise javascriptsession2

Object Literal Notation

• Doesn’t pollute the global namespace

• Assist in organizing code into logical parts

• Easy to read

Wednesday, November 7, 12

Page 37: Enterprise javascriptsession2

Nested Namespacing

Wednesday, November 7, 12

Page 38: Enterprise javascriptsession2

Nested Namespacing

• An extension of object literal notiation

Wednesday, November 7, 12

Page 39: Enterprise javascriptsession2

Nested Namespacing

• An extension of object literal notiation

• Even if a namespace already exists, unlikely that the children do

Wednesday, November 7, 12

Page 40: Enterprise javascriptsession2

Nested Namespacing

• An extension of object literal notiation

• Even if a namespace already exists, unlikely that the children do

• Used extensively by JavaScript API vendors like Yahoo and Google

Wednesday, November 7, 12

Page 41: Enterprise javascriptsession2

Nested Namespacing

• An extension of object literal notiation

• Even if a namespace already exists, unlikely that the children do

• Used extensively by JavaScript API vendors like Yahoo and Google

• Negligible performance ding

Wednesday, November 7, 12

Page 42: Enterprise javascriptsession2

Immediately-Invoked Function Expressions

Wednesday, November 7, 12

Page 43: Enterprise javascriptsession2

Immediately-Invoked Function Expressions• Also known as “iffy”

Wednesday, November 7, 12

Page 44: Enterprise javascriptsession2

Immediately-Invoked Function Expressions• Also known as “iffy”

• An unnamed function which is immediately invoked after it’s been defined

Wednesday, November 7, 12

Page 45: Enterprise javascriptsession2

Immediately-Invoked Function Expressions• Also known as “iffy”

• An unnamed function which is immediately invoked after it’s been defined

• Allows for information hiding

Wednesday, November 7, 12

Page 46: Enterprise javascriptsession2

Immediately-Invoked Function Expressions• Also known as “iffy”

• An unnamed function which is immediately invoked after it’s been defined

• Allows for information hiding

• Improves minification results

Wednesday, November 7, 12

Page 47: Enterprise javascriptsession2

Namespace Injection

Wednesday, November 7, 12

Page 48: Enterprise javascriptsession2

Namespace Injection

• A variation of the IIFE

Wednesday, November 7, 12

Page 49: Enterprise javascriptsession2

Namespace Injection

• A variation of the IIFE

• Methods and properties get injected for a specific namespace

Wednesday, November 7, 12

Page 50: Enterprise javascriptsession2

Namespace Injection

• A variation of the IIFE

• Methods and properties get injected for a specific namespace

• A bit cumbersome

Wednesday, November 7, 12

Page 51: Enterprise javascriptsession2

Namespaces

Wednesday, November 7, 12

Page 52: Enterprise javascriptsession2

Namespaces

• Most of my current code uses Nested Namespacing

Wednesday, November 7, 12

Page 53: Enterprise javascriptsession2

Namespaces

• Most of my current code uses Nested Namespacing

• My newest code uses IIFE

Wednesday, November 7, 12

Page 54: Enterprise javascriptsession2

Design Patterns

Wednesday, November 7, 12

Page 55: Enterprise javascriptsession2

Design Patterns

Wednesday, November 7, 12

Page 56: Enterprise javascriptsession2

Design Patterns

• Singleton

Wednesday, November 7, 12

Page 57: Enterprise javascriptsession2

Design Patterns

• Singleton

• Chaining

Wednesday, November 7, 12

Page 58: Enterprise javascriptsession2

Design Patterns

• Singleton

• Chaining

• Observer

Wednesday, November 7, 12

Page 59: Enterprise javascriptsession2

Design Patterns

• Singleton

• Chaining

• Observer

• Hands-on Exercise

Wednesday, November 7, 12

Page 61: Enterprise javascriptsession2

When to Use a Singleton

Wednesday, November 7, 12

Page 62: Enterprise javascriptsession2

When to Use a Singleton

• For namespacing or modularizing code, it should be used as often as possible

Wednesday, November 7, 12

Page 63: Enterprise javascriptsession2

When to Use a Singleton

• For namespacing or modularizing code, it should be used as often as possible

• In simple projects, a singleton can be used a a namespace

Wednesday, November 7, 12

Page 64: Enterprise javascriptsession2

When to Use a Singleton

• For namespacing or modularizing code, it should be used as often as possible

• In simple projects, a singleton can be used a a namespace

• In larger projects, it can be used to group related code together

Wednesday, November 7, 12

Page 65: Enterprise javascriptsession2

ChainingMethod chaining, also known as named parameter idiom, is a common technique for invoking multiple method calls in object-oriented programming languages.

Wednesday, November 7, 12

Page 66: Enterprise javascriptsession2

ChainingNot really a design pattern, more of a syntax hack, but its extensive use in JavaScript and JavaScript libraries requires explanation.

Wednesday, November 7, 12

Page 67: Enterprise javascriptsession2

Chaining

Wednesday, November 7, 12

Page 68: Enterprise javascriptsession2

Chaining

• There are generally two types of methods:

Wednesday, November 7, 12

Page 69: Enterprise javascriptsession2

Chaining

• There are generally two types of methods:

• Accessors - return a value

Wednesday, November 7, 12

Page 70: Enterprise javascriptsession2

Chaining

• There are generally two types of methods:

• Accessors - return a value

• Mutators - modify a property on the object and return “this” to enable chaining

Wednesday, November 7, 12

Page 72: Enterprise javascriptsession2

Observer

Wednesday, November 7, 12

Page 73: Enterprise javascriptsession2

Observer

• Consist of three main components:

Wednesday, November 7, 12

Page 74: Enterprise javascriptsession2

Observer

• Consist of three main components:

• The Observer

Wednesday, November 7, 12

Page 75: Enterprise javascriptsession2

Observer

• Consist of three main components:

• The Observer

• The Observer List

Wednesday, November 7, 12

Page 76: Enterprise javascriptsession2

Observer

• Consist of three main components:

• The Observer

• The Observer List

• The Subject

Wednesday, November 7, 12

Page 77: Enterprise javascriptsession2

Hands-on Exercise

Wednesday, November 7, 12

Page 78: Enterprise javascriptsession2

Hands-on Exercise

• http://jsfiddle.net/rockncoder/FkDRV/2/

Wednesday, November 7, 12

Page 79: Enterprise javascriptsession2

Hands-on Exercise

• http://jsfiddle.net/rockncoder/FkDRV/2/

• Hook an event handler to the “Click Me” button

Wednesday, November 7, 12

Page 80: Enterprise javascriptsession2

Hands-on Exercise

• http://jsfiddle.net/rockncoder/FkDRV/2/

• Hook an event handler to the “Click Me” button

• Have it some how cause the “log.me” event

Wednesday, November 7, 12

Page 81: Enterprise javascriptsession2

Hands-on Exercise

• http://jsfiddle.net/rockncoder/FkDRV/2/

• Hook an event handler to the “Click Me” button

• Have it some how cause the “log.me” event

• Remember to pass a message, (msg)

Wednesday, November 7, 12

Page 82: Enterprise javascriptsession2

Performance

Wednesday, November 7, 12

Page 83: Enterprise javascriptsession2

Performance

Wednesday, November 7, 12

Page 84: Enterprise javascriptsession2

Performance

• Big O-Notation

Wednesday, November 7, 12

Page 85: Enterprise javascriptsession2

Performance

• Big O-Notation

• Measuring Performance

Wednesday, November 7, 12

Page 86: Enterprise javascriptsession2

Performance

• Big O-Notation

• Measuring Performance

• 5 Performance Tips

Wednesday, November 7, 12

Page 87: Enterprise javascriptsession2

Performance

• Big O-Notation

• Measuring Performance

• 5 Performance Tips

• Hands-on Exercise

Wednesday, November 7, 12

Page 88: Enterprise javascriptsession2

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up

our opportunities in that critical 3%. D. Knuth

Wednesday, November 7, 12

Page 89: Enterprise javascriptsession2

Big O Notation

Wednesday, November 7, 12

Page 90: Enterprise javascriptsession2

Big O Notation

Wednesday, November 7, 12

Page 91: Enterprise javascriptsession2

Big O Notation

• O(1), Constant

Wednesday, November 7, 12

Page 92: Enterprise javascriptsession2

Big O Notation

• O(1), Constant

• O(n), Linear

Wednesday, November 7, 12

Page 93: Enterprise javascriptsession2

Big O Notation

• O(1), Constant

• O(n), Linear

• O(n ^ 2), Quadratic

Wednesday, November 7, 12

Page 94: Enterprise javascriptsession2

Big O Notation

• O(1), Constant

• O(n), Linear

• O(n ^ 2), Quadratic

• O(2 ^ n), Exponential

Wednesday, November 7, 12

Page 95: Enterprise javascriptsession2

Big O Notation

• O(1), Constant

• O(n), Linear

• O(n ^ 2), Quadratic

• O(2 ^ n), Exponential

• O(n!), Factorial

Wednesday, November 7, 12

Page 96: Enterprise javascriptsession2

Measuring Performance

Wednesday, November 7, 12

Page 97: Enterprise javascriptsession2

Measuring Performance

• JavaScript’s includes a Date object

Wednesday, November 7, 12

Page 98: Enterprise javascriptsession2

Measuring Performance

• JavaScript’s includes a Date object

• Date.getTime() measures time in milliseconds

Wednesday, November 7, 12

Page 99: Enterprise javascriptsession2

Measuring Performance

• JavaScript’s includes a Date object

• Date.getTime() measures time in milliseconds

• Resolution is not fine enough so we do things multiple times

Wednesday, November 7, 12

Page 100: Enterprise javascriptsession2

Measuring Performance

/* A simple performance measurer */

var elapsedTime, startTime = new Date().getTime();

/* Do some operations */

elapsedTime = new Date().getTime() - startTime;

Wednesday, November 7, 12

Page 101: Enterprise javascriptsession2

5 Performance Tips

Wednesday, November 7, 12

Page 102: Enterprise javascriptsession2

Tip #5Use as few files as

possible

Wednesday, November 7, 12

Page 103: Enterprise javascriptsession2

Use as few files as possible

Wednesday, November 7, 12

Page 104: Enterprise javascriptsession2

Use as few files as possible

• Browser can load multiple files at a time

Wednesday, November 7, 12

Page 105: Enterprise javascriptsession2

Use as few files as possible

• Browser can load multiple files at a time

• But only one JS file at a time

Wednesday, November 7, 12

Page 106: Enterprise javascriptsession2

Use as few files as possible

• Browser can load multiple files at a time

• But only one JS file at a time

• Concatenate multiple JS file into one

Wednesday, November 7, 12

Page 107: Enterprise javascriptsession2

Use as few files as possible

• Browser can load multiple files at a time

• But only one JS file at a time

• Concatenate multiple JS file into one

• Compress JS files

Wednesday, November 7, 12

Page 108: Enterprise javascriptsession2

Use as few files as possible

• Browser can load multiple files at a time

• But only one JS file at a time

• Concatenate multiple JS file into one

• Compress JS files

• Prefer JS at the bottom of the HTML file

Wednesday, November 7, 12

Page 109: Enterprise javascriptsession2

Tip #4Prefer local variables

Wednesday, November 7, 12

Page 110: Enterprise javascriptsession2

Prefer local variables

Wednesday, November 7, 12

Page 111: Enterprise javascriptsession2

Prefer local variables

• Variables in scope found quicker

Wednesday, November 7, 12

Page 112: Enterprise javascriptsession2

Prefer local variables

• Variables in scope found quicker

• JS search local scope, then global

Wednesday, November 7, 12

Page 113: Enterprise javascriptsession2

Prefer local variables

• Variables in scope found quicker

• JS search local scope, then global

• with creates a new scope level ahead of local

Wednesday, November 7, 12

Page 114: Enterprise javascriptsession2

Prefer local variables

• Variables in scope found quicker

• JS search local scope, then global

• with creates a new scope level ahead of local

• closures also create new scope level

Wednesday, November 7, 12

Page 115: Enterprise javascriptsession2

Global vs. Local Demo

Wednesday, November 7, 12

Page 116: Enterprise javascriptsession2

Prefer local variables

• Property chains similar to var scoping

• Objects closer in the chain found quicker

Wednesday, November 7, 12

Page 117: Enterprise javascriptsession2

Properties Demo

Wednesday, November 7, 12

Page 118: Enterprise javascriptsession2

Tip #3Reduce the work done

in loops

Wednesday, November 7, 12

Page 119: Enterprise javascriptsession2

Reduce the work done in loops

Wednesday, November 7, 12

Page 120: Enterprise javascriptsession2

Reduce the work done in loops

• No real speed difference between: for, while and do_while

Wednesday, November 7, 12

Page 121: Enterprise javascriptsession2

Reduce the work done in loops

• No real speed difference between: for, while and do_while

• Avoid for_in

Wednesday, November 7, 12

Page 122: Enterprise javascriptsession2

Reduce the work done in loops

• No real speed difference between: for, while and do_while

• Avoid for_in

• Watch library based for_each

Wednesday, November 7, 12

Page 123: Enterprise javascriptsession2

Loop Demos

Wednesday, November 7, 12

Page 124: Enterprise javascriptsession2

Tip #2Learn jQuery

Wednesday, November 7, 12

Page 125: Enterprise javascriptsession2

Learn jQuery

Wednesday, November 7, 12

Page 126: Enterprise javascriptsession2

Learn jQuery

• Know what jQuery does

Wednesday, November 7, 12

Page 127: Enterprise javascriptsession2

Learn jQuery

• Know what jQuery does

• Be sure to evaluate its use

Wednesday, November 7, 12

Page 128: Enterprise javascriptsession2

Learn jQuery

• Know what jQuery does

• Be sure to evaluate its use

• Cache the results of jQuery selectors

Wednesday, November 7, 12

Page 129: Enterprise javascriptsession2

jQuery Demo

Wednesday, November 7, 12

Page 130: Enterprise javascriptsession2

Tip #1Avoid the DOM

Wednesday, November 7, 12

Page 131: Enterprise javascriptsession2

Avoid the DOM

Wednesday, November 7, 12

Page 132: Enterprise javascriptsession2

Avoid the DOM

• The DOM is REALLY Slow

Wednesday, November 7, 12

Page 133: Enterprise javascriptsession2

Avoid the DOM

• The DOM is REALLY Slow

• Avoid accessing it when possible

Wednesday, November 7, 12

Page 134: Enterprise javascriptsession2

Avoid the DOM

• The DOM is REALLY Slow

• Avoid accessing it when possible

• Do work offline then update DOM

Wednesday, November 7, 12

Page 135: Enterprise javascriptsession2

DOM Access Demos

Wednesday, November 7, 12

Page 136: Enterprise javascriptsession2

Hands-on Exercise

Wednesday, November 7, 12

Page 137: Enterprise javascriptsession2

Hands-on Exercisehttp://jsfiddle.net/rockncoder/HDWRb/4/

Wednesday, November 7, 12

Page 138: Enterprise javascriptsession2

Hands-on Exercisehttp://jsfiddle.net/rockncoder/HDWRb/4/

Run the fiddle

Wednesday, November 7, 12

Page 139: Enterprise javascriptsession2

Hands-on Exercisehttp://jsfiddle.net/rockncoder/HDWRb/4/

Run the fiddle

Note the execution time

Wednesday, November 7, 12

Page 140: Enterprise javascriptsession2

Hands-on Exercisehttp://jsfiddle.net/rockncoder/HDWRb/4/

Run the fiddle

Note the execution time

Improve the time

Wednesday, November 7, 12

Page 141: Enterprise javascriptsession2

Hands-on Exercisehttp://jsfiddle.net/rockncoder/HDWRb/4/

Run the fiddle

Note the execution time

Improve the time

Have a question? Call me over

Wednesday, November 7, 12

Page 142: Enterprise javascriptsession2

Debugging

Wednesday, November 7, 12

Page 143: Enterprise javascriptsession2

Debugging

• Chrome Developer Tools

Wednesday, November 7, 12

Page 144: Enterprise javascriptsession2

Debugging

• Chrome Developer Tools

• Safari Remote Debugging

Wednesday, November 7, 12

Page 145: Enterprise javascriptsession2

Debugging

• Chrome Developer Tools

• Safari Remote Debugging

• Fiddler2

Wednesday, November 7, 12

Page 146: Enterprise javascriptsession2

Debugging

• Chrome Developer Tools

• Safari Remote Debugging

• Fiddler2

• Proxying an iPad

Wednesday, November 7, 12

Page 147: Enterprise javascriptsession2

Debugging

• Chrome Developer Tools

• Safari Remote Debugging

• Fiddler2

• Proxying an iPad

• Hands-on Exercise: Fiddler

Wednesday, November 7, 12

Page 148: Enterprise javascriptsession2

Chrome Developer Tools

Wednesday, November 7, 12

Page 149: Enterprise javascriptsession2

Chrome Developer Tools

• ctrl-shift-J brings up the console

Wednesday, November 7, 12

Page 150: Enterprise javascriptsession2

Chrome Developer Tools

• ctrl-shift-J brings up the console

• View HTML

Wednesday, November 7, 12

Page 151: Enterprise javascriptsession2

Chrome Developer Tools

• ctrl-shift-J brings up the console

• View HTML

• View/Modify Source

Wednesday, November 7, 12

Page 152: Enterprise javascriptsession2

Chrome Developer Tools

• ctrl-shift-J brings up the console

• View HTML

• View/Modify Source

• Set breakpoints

Wednesday, November 7, 12

Page 153: Enterprise javascriptsession2

Safari Remote Debugging

Wednesday, November 7, 12

Page 154: Enterprise javascriptsession2

Safari Remote Debugging

• Settings > Safari > Advanced

Wednesday, November 7, 12

Page 155: Enterprise javascriptsession2

Safari Remote Debugging

• Settings > Safari > Advanced

• Web Inspector = ON

Wednesday, November 7, 12

Page 156: Enterprise javascriptsession2

Safari Remote Debugging

• Settings > Safari > Advanced

• Web Inspector = ON

• Safari > Develop > iPad > website

Wednesday, November 7, 12

Page 157: Enterprise javascriptsession2

Safari Remote Debugging

• Settings > Safari > Advanced

• Web Inspector = ON

• Safari > Develop > iPad > website

• Similar to using Chrome

Wednesday, November 7, 12

Page 158: Enterprise javascriptsession2

Fiddler2

Wednesday, November 7, 12

Page 159: Enterprise javascriptsession2

Fiddler2

• http://www.fiddler2.com/fiddler2/

Wednesday, November 7, 12

Page 160: Enterprise javascriptsession2

Fiddler2

• http://www.fiddler2.com/fiddler2/

• Web Debugging Proxy

Wednesday, November 7, 12

Page 161: Enterprise javascriptsession2

Fiddler2

• http://www.fiddler2.com/fiddler2/

• Web Debugging Proxy

• View Web Traffic

Wednesday, November 7, 12

Page 162: Enterprise javascriptsession2

Fiddler2

• http://www.fiddler2.com/fiddler2/

• Web Debugging Proxy

• View Web Traffic

• Filter Web Traffic

Wednesday, November 7, 12

Page 163: Enterprise javascriptsession2

Fiddler2

• http://www.fiddler2.com/fiddler2/

• Web Debugging Proxy

• View Web Traffic

• Filter Web Traffic

• Inspect Requests

Wednesday, November 7, 12

Page 164: Enterprise javascriptsession2

Fiddler2

• http://www.fiddler2.com/fiddler2/

• Web Debugging Proxy

• View Web Traffic

• Filter Web Traffic

• Inspect Requests

• Inspect Responses

Wednesday, November 7, 12

Page 165: Enterprise javascriptsession2

Proxying an iPad

Wednesday, November 7, 12

Page 166: Enterprise javascriptsession2

Proxying an iPad

• Tools > Fiddler Options > Connections

Wednesday, November 7, 12

Page 167: Enterprise javascriptsession2

Proxying an iPad

• Tools > Fiddler Options > Connections

• Wi-Fi > (right arrow) > HTTP Proxy

Wednesday, November 7, 12

Page 168: Enterprise javascriptsession2

Proxying an iPad

• Tools > Fiddler Options > Connections

• Wi-Fi > (right arrow) > HTTP Proxy

• Set Server & Port

Wednesday, November 7, 12

Page 169: Enterprise javascriptsession2

Proxying an iPad

• Tools > Fiddler Options > Connections

• Wi-Fi > (right arrow) > HTTP Proxy

• Set Server & Port

• Unfortunately Proxying an Android device is not as easy

Wednesday, November 7, 12

Page 170: Enterprise javascriptsession2

Hands-on Exercise

Wednesday, November 7, 12

Page 171: Enterprise javascriptsession2

Hands-on Exercise

• Twitter’s Search API is Open

• The URL is http://search.twitter.com/search.json?q={subject}

• Using Fiddler make a request to Twitter about “sandy”

• Use the JSON view to inspect the results

Wednesday, November 7, 12

Page 172: Enterprise javascriptsession2

The Code is Online

https://github.com/Rockncoder/EnterpriseJavaScript

Wednesday, November 7, 12

Page 173: Enterprise javascriptsession2

Summary

Wednesday, November 7, 12

Page 174: Enterprise javascriptsession2

Summary

• Namespacing

Wednesday, November 7, 12

Page 175: Enterprise javascriptsession2

Summary

• Namespacing

• Design Patterns

Wednesday, November 7, 12

Page 176: Enterprise javascriptsession2

Summary

• Namespacing

• Design Patterns

• Performance

Wednesday, November 7, 12

Page 177: Enterprise javascriptsession2

Summary

• Namespacing

• Design Patterns

• Performance

• Debugging

Wednesday, November 7, 12