devnexus 2016

56
DEBUGGING JAVASCRIPT LIKE A BOSS Stephanie Brubaker, FullStory

Upload: stephanie-brubaker

Post on 12-Jan-2017

142 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: DevNexus 2016

DEBUGGING JAVASCRIPT LIKE A BOSSStephanie Brubaker, FullStory

Page 2: DevNexus 2016

I write a *lot* of UI code.

Page 3: DevNexus 2016

I work at

Page 4: DevNexus 2016
Page 5: DevNexus 2016
Page 6: DevNexus 2016

THE BEST DEFENSE IS A GOOD OFFENSE

Page 7: DevNexus 2016

THE BEST DEFENSE IS A GOOD OFFENSE

Don’t write JavaScript

Page 8: DevNexus 2016

TypeScript

Abstract classes + InterfacesCompile-time checks

Static type analysis

Page 9: DevNexus 2016

Alternatives

GWT (Java to JS)

CoffeeScript

JSX

Page 10: DevNexus 2016

THE BEST DEFENSE IS A GOOD OFFENSE

Use CSS to simplify code

Page 11: DevNexus 2016

THE BEST DEFENSE IS A GOOD OFFENSE

Page 12: DevNexus 2016

USE CSS TO SIMPLIFY CODE

Javascript:

<div id="myDiv" onmouseover="document.getElementById('myDiv').style.background = ‘red’"onmouseout="document.getElementById('myDiv').style.background = ‘’"> Mouse over me!</div>

Page 13: DevNexus 2016

USE CSS TO SIMPLIFY CODE

CSS:

<div class=”myDiv”> Mouse over me!</div>

.myDiv:hover {background-color: red;

}

Page 14: DevNexus 2016

THE BEST DEFENSE IS A GOOD OFFENSE

Optimize your environment

Page 15: DevNexus 2016

OPTIMIZE YOUR ENVIRONMENT

Run a compiling server

◦ Gulp◦ Grunt

Page 16: DevNexus 2016

OPTIMIZE YOUR ENVIRONMENT

Use an IDE◦ IntelliJ/WebStorm◦ Eclipse

...or a good editor◦ Sublime

Page 17: DevNexus 2016

THE BEST DEFENSE IS A GOOD OFFENSE

◦ Change languages

◦ Use CSS

◦ Optimize your environment

Page 18: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 19: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Add source maps

Page 20: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 21: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 22: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Use browser debugger

Page 23: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 24: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 25: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 26: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 27: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 28: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 29: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 30: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

http://www.html5rocks.com/en/tutorials/developertools/async-call-stack/

Page 31: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 32: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 33: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 34: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 35: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 36: DevNexus 2016

THE BEST DEFENSE IS A GOOD OFFENSE

Repro error conditions

Page 37: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 38: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 39: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

Page 40: DevNexus 2016

DEV TOOLS ARE YOUR FRIEND

◦ Add source maps

◦ Use browser debugger

◦ Repro error conditions

Page 41: DevNexus 2016

PROTECT YOUR INVESTMENT

Page 42: DevNexus 2016

MY PRECIOUS

Page 43: DevNexus 2016

PROTECT YOUR INVESTMENT

Create automated tests

Page 44: DevNexus 2016

Web Automation Frameworks

nightmare.js

Selenium/WebDriver

Page 45: DevNexus 2016

http://www.nightmarejs.org/

Page 46: DevNexus 2016

http://www.nightmarejs.org/

Page 47: DevNexus 2016

Test frameworks

Jasmine

QUnit

Mocha

Page 48: DevNexus 2016

nightmare.js + Mocha

Page 49: DevNexus 2016

CYPRESS.IO

Page 50: DevNexus 2016

Build Automation

JenkinsGrunt

Buildbot

Gulp

Page 51: DevNexus 2016

PROTECT YOUR INVESTMENT

Require code reviews

Page 52: DevNexus 2016

NOT THIS

Page 53: DevNexus 2016

Code Reviews FTW

Maintain culture

Genuinely better code

Knowledge transfer

Page 54: DevNexus 2016

PROTECT YOUR INVESTMENT

◦ Create automated tests

◦ Require code reviews

Page 55: DevNexus 2016

DEBUGGING JS LIKE A BOSS

Start with a good offense

Dev tools are your friend

Protect your investment

Page 56: DevNexus 2016

Thanks!

QUESTIONS?@[email protected]