SlideShare a Scribd company logo
THE ES6 CONUNDRUM
ADVANCING JAVASCRIPT WITHOUT BREAKING THE WEB
CHRIS HEILMANN @CODEPO8 ALL THINGS OPEN 2015
TODAY, I WANT TO
TALK TO YOU ABOUT
JAVASCRIPT…
JAVASCRIPT IS…
• An incredibly versatile
language
• Available web-‐wide and across
many platforms
• Toolset independent
• Forgiving and inviting
YOU CAN USE
JAVASCRIPT
• In browsers on the web
• On the server
• In applications
• To access services
• As a data format (﴾JSON)﴿
• On hardware
• … your turn, surprise me :)﴿
THE FLEXIBILITY OF
JAVASCRIPT MAKES ALL
OF THIS POSSIBLE…
JAVASCRIPT IS IN SUPER HIGH DEMAND!
https://www.google.com/trends/explore#q=undefined%20is%20not%20a%20function
WE’RE GOING
FULL SPEED ON
INNOVATION…
• Componentised Web
• Extensible Web Manifesto
• WebGL
• WebAssembly/ASM.js
• PostCSS
• Progressive Apps
JAVASCRIPT
TECHNICALLY
DOESN’T EXIST…
JAVA IS TO JAVASCRIPT
LIKE HAM IS TO HAMSTER
1997 2015
1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015
1997
ECMAScript1
1998
ECMAScript2
1999
ECMAScript3
2005 -‐ 2007
ECMAScript4 -‐ Abandoned
2009
ECMAScript5
2015
ECMAScript6
IT’S BEEN A BUMPY RIDE…
1997 2015
1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015
1997
ECMAScript1
1998
ECMAScript2
1999
ECMAScript3
2005 -‐ 2007
ECMAScript4 -‐ Abandoned
2009
ECMAScript5
2015
ECMAScript6
…NOW WE HAVE ES6!
• 5+ years since ES5 ratification
• Significant changes in 15+ years
• Backwards compatible
• Ratified June 2015
http://www.ecma-‐international.org/publications/standards/Ecma-‐262.htm
INTERMISSION:
NOT BREAKING THE
WEB IS A GOOD
THING!
JAVASCRIPT ABUSE IS
RAMPANT…
3MB OF BLOCKING
JAVASCRIPT BEFORE
THE FIRST WORD
APPEARS ON THE
PAGE!
WE BREAK THE WEB
FOR THE SAKE OF
DEVELOPER
CONVENIENCE…
THE JAVASCRIPT
LEARNING PROCESS
HAS ALWAYS BEEN
INTERESTING…
• Use view source to see what
others are doing…
• Copy and paste the bits that
look like they are responsible
for some things
• Change some numbers around
• Run into errors
• Blame Internet Explorer
THIS, OF COURSE,
WAS WRONG AND
WE GOT MORE
PROFESSIONAL…
• Search for a solution on
Stackoverflow
• Copy and paste the bits that
look like they are responsible
for some things
• Change some numbers around
• Run into errors
• Blame JavaScript for being
terrible and not a real language
• For good measure, blame
Internet Explorer.
IF YOU THINK
JAVASCRIPT, THINK
ESCALATORS.
EMBRACING ES6 PROMOTES JS FROM A HACK TO
A LANGUAGE TO BUILD LARGE PRODUCTS WITH.
• Arrow functions as a short-hand version of an
anonymous function.
• Block-level scope using let instead of var makes
variables scoped to a block (if, for, while, etc.)
• Classes to encapsulate and extend code.
• Constants using the const keyword.
• Default parameters for functions like foo(bar = 3, baz =
2)
• Destructuring to assign values from arrays or objects
into variables.
• Generators that create iterators using function* and
the yield keyword.
• Map, a Dictionary type object that can be used to store
key/value pairs. and Set as a collection object to store
a list of data values.
• Modules as a way of organizing and loading code.
• Promises for async operations avoiding callback hell
• Rest parameters instead of using arguments to access
functions arguments.
• Template Strings to build up string values including
multi-line strings.
ES6 COMES WITH SO
MUCH GOODNESS,
TECHNICALLY IT HAS
TO BE FATTENING…
Library Builders
map, set & weakmap
__proto__
Proxies
Symbols
Sub7classable built7ins
Scalable Apps
let, const & block7
scoped bindings
Classes
Promises
Iterators
Generators
Typed arrays
Modules
Syntactic Sugar
Arrow functions
Enhanced object literals
Template strings
Destructuring
Rest, Spread, Default
String, Math, Number,
Object, RegExp APIs
ALL OF THESE PARTS HAVE DIFFERENT AUDIENCES
SUPPORT IS ENCOURAGING (﴾EDGE, FIREFOX, CHROME, SAFARI (﴾ON 9)﴿)﴿
http://kangax.github.io/compat-table/es6/
NUMBERS!
Current status (﴾October 2015)﴿:
Desktop:
Edge 13: 80%
Firefox 42: 71%
Chrome 47/Opera 34: 63 %
Safari 9: 54% (﴾former 21%!)﴿
Mobile:
Android 5.1: 29%
iOS9: 54%
http://kangax.github.io/compat-table/es6/
THE PROBLEM: FOR
NON-‐SUPPORTING
BROWSERS, ES6
FEATURES ARE
SYNTAX ERRORS…
THE SOLUTION: TRANSPILING INTO ES5…
https://babeljs.io
• Converts ES6 to older versions on the server or the client
• In use by Facebook and many others
• Used in editors and tool chains
✘ Extra step between writing code
and running it in the browser.
✘ We don’t run or debug the code
we write.
✘ We hope the transpiler creates
efficient code
✘ We create a lot of code
✘ Browsers that support ES6 will
never get any.
THE PROBLEMS WITH
TRANSPILING:
https://featuretests.io/
WHAT ABOUT FEATURE TESTING?
✘ It is an extra step that might be
costly
✘ We can only do it client-‐side
✘ We can get false positives -‐
experimental features might be
implemented in a rudimentary
fashion
✘ We have to keep your feature
tests up-‐to-‐date and extend them
as needed -‐ support for one
feature doesn’t mean support for
another.
THE PROBLEMS WITH
FEATURE TESTING:
YOU CAN USE AN
ABSTRACTION,
FRAMEWORK OR
LIBRARY THAT HAS
SIMILAR FEATURES…
✘ They makes us dependent on
that abstraction
✘ We can’t control possible version
clashes in the abstraction layer
✘ Maintainers need to know the
abstraction instead of the
standard of ES6
PROBLEMS WITH
ANY ABSTRACTION
THE ES6
CONUNDRUM…
• We can’t use it safely in the wild
• We can use TypeScript or transpile it
• We can feature test for it, but that can
get complex quickly
• Browsers that support it, will not get
any ES6 that way (﴾but can use it
internally)﴿
• The performance is bad right now
(﴾which is a normal thing)﴿. To improve
this, we need ES6 to be used in the
wild…
http://www.sitepoint.com/the-‐es6-‐conundrum/
TEST ES6 PERFORMANCE http://kpdecker.github.io/six-‐speed/
YOU CAN HELP
MAKE THIS BETTER!
BE ACTIVE!
If you use JavaScript in an
environment you control,
please use ES6 and feed
back your experiences to
the browser creators and
the standard bodies.
HELP ES6 BY
LOOKING AT ITS
UNIT TESTS…
https://github.com/tc39/test262
http://test262.ecmascript.org/
YOU CAN LEARN
AND FIX ISSUES.
http://es6katas.org
SEE THE BABEL.JS DOCS AND TRY IT IN THE BROWSER…
https://babeljs.io/docs/learn-‐es2015/
350 BULLET POINTS
https://babeljs.io/docs/learn-‐es2015/
READ THE
EXCELLENT BOOK
EXPLORING ES6
FOR FREE
(﴾OR BUY IT, AXEL DESERVES SUPPORT)﴿
http://exploringjs.com/es6/
JAVASCRIPT HAD A
BUMPY RIDE, AND
MANY PREJUDICES
PERSIST.
OPEN YOUR MIND
AND LEARN HOW FAR
IT IS COME AND
WHAT IT CAN DO FOR
YOU.
THANKS!
CHRIS HEILMANN
@CODEPO8
CHRISTIANHEILMANN.COM

More Related Content

PDF
Erase and Rewind - Open Web Camp 2015
PDF
All the small things… - Awwwards 2016
PDF
Can we make es6 the baseline of the “modern web”? - BrazilJS 2105
PDF
Overboard.js - where are we going with with jsconfasia / devfestasia
PDF
Fixing web and JS gaps
PDF
Let’s learn how to use JavaScript responsibly and stay up-to-date.
PDF
The State of the Web - Helsinki meetup
PDF
Firefox OS - HTML5 for a truly world-wide-web
Erase and Rewind - Open Web Camp 2015
All the small things… - Awwwards 2016
Can we make es6 the baseline of the “modern web”? - BrazilJS 2105
Overboard.js - where are we going with with jsconfasia / devfestasia
Fixing web and JS gaps
Let’s learn how to use JavaScript responsibly and stay up-to-date.
The State of the Web - Helsinki meetup
Firefox OS - HTML5 for a truly world-wide-web

What's hot (20)

PDF
The wheel is spinning but the hamster is almost dead - Smartweb 2015
PDF
The image problem of the web and how to solve it…
PDF
Moore vs. May - everything is faster and better: we can fix that
PDF
Making ES6 available to all with ChakraCore
PDF
NodeConfLondon - Making ES6 happen with ChakraCore and Node
PDF
Mind the Gap - State of the Browser 2015
PDF
Upgrading JavaScript to ES6 and using TypeScript as a shortcut
PDF
5 Quick JavaScript Performance Improvement Tips
PPT
High performance java script why everything youve been taught is wrong
PDF
A New Hope – the web strikes back
PDF
Making ES6 available to all with ChakraCore and Typescript
PPTX
JavaScript : What is it really? AND Some new features in ES6
PDF
Turning huge ships - Open Source and Microsoft
PDF
Innovating the other web - #wrocsharp keynote
PDF
JavaScript is a buffet - Scriptconf 2017 keynote
PDF
Breaking out of the Tetris mind set #btconf
PDF
Copass + Ruby on Rails = <3 - From Simplicity to Complexity
PPTX
Advancing JavaScript without breaking the web - MunichJS
PDF
The JavaScript Delusion
PPTX
Recreating mobile controls in mobile web apps
The wheel is spinning but the hamster is almost dead - Smartweb 2015
The image problem of the web and how to solve it…
Moore vs. May - everything is faster and better: we can fix that
Making ES6 available to all with ChakraCore
NodeConfLondon - Making ES6 happen with ChakraCore and Node
Mind the Gap - State of the Browser 2015
Upgrading JavaScript to ES6 and using TypeScript as a shortcut
5 Quick JavaScript Performance Improvement Tips
High performance java script why everything youve been taught is wrong
A New Hope – the web strikes back
Making ES6 available to all with ChakraCore and Typescript
JavaScript : What is it really? AND Some new features in ES6
Turning huge ships - Open Source and Microsoft
Innovating the other web - #wrocsharp keynote
JavaScript is a buffet - Scriptconf 2017 keynote
Breaking out of the Tetris mind set #btconf
Copass + Ruby on Rails = <3 - From Simplicity to Complexity
Advancing JavaScript without breaking the web - MunichJS
The JavaScript Delusion
Recreating mobile controls in mobile web apps
Ad

Viewers also liked (15)

PDF
Quo vadis, JavaScript? Devday.pl keynote
PDF
What's New in ES6 for Web Devs
PDF
BabelJS - James Kyle at Modern Web UI
PDF
Introduction into ES6 JavaScript.
PDF
Emacscript 6
PDF
Running BabelJS on Windows (Try ES6 on Windows)
PDF
From Hacker to Programmer (w/ Webpack, Babel and React)
PDF
ES6 - Next Generation Javascript
PDF
ES2015 / ES6: Basics of modern Javascript
PDF
An Intro To ES6
PDF
An Overview of the React Ecosystem
PDF
ES6: The Awesome Parts
PDF
A call to JS Developers - Let’s stop trying to impress each other and start b...
PDF
Lecture 2: ES6 / ES2015 Slide
PDF
reveal.js 3.0.0
Quo vadis, JavaScript? Devday.pl keynote
What's New in ES6 for Web Devs
BabelJS - James Kyle at Modern Web UI
Introduction into ES6 JavaScript.
Emacscript 6
Running BabelJS on Windows (Try ES6 on Windows)
From Hacker to Programmer (w/ Webpack, Babel and React)
ES6 - Next Generation Javascript
ES2015 / ES6: Basics of modern Javascript
An Intro To ES6
An Overview of the React Ecosystem
ES6: The Awesome Parts
A call to JS Developers - Let’s stop trying to impress each other and start b...
Lecture 2: ES6 / ES2015 Slide
reveal.js 3.0.0
Ad

Similar to The ES6 Conundrum - All Things Open 2015 (20)

PPTX
Javantura v3 - ES6 – Future Is Now – Nenad Pečanac
PPTX
ES6 - JavaCro 2016
PPTX
Intro to ES6 and why should you bother !
PDF
Ecma6 in the wild
PDF
The Future is Here: ECMAScript 6 in the Wild
PDF
Ecma6 in the wild
PPTX
JS awesomeness or how will ES6 help me build better apps ?
PDF
Fitc whats new in es6 for web devs
PPTX
Workshop JavaScript ES6+
PDF
ES6, A Look Into Your Future
PDF
JavaScript ES6
PDF
Hands on: The sexy side of JavaScript (feat. node.js)
PDF
Progressive transpilation and the road to ES2015 in production
PDF
Responsive, adaptive and responsible - keynote at NebraskaJS
PDF
2017-web-development-readthedocs-io-en-latest.pdf
PPTX
React Basic and Advance || React Basic
PDF
Effective ES6
PPT
ECMAScript 6: A Better JavaScript for the Ambient Computing Era
PPTX
Introduction to es6
PPTX
ECMAScript 2015
Javantura v3 - ES6 – Future Is Now – Nenad Pečanac
ES6 - JavaCro 2016
Intro to ES6 and why should you bother !
Ecma6 in the wild
The Future is Here: ECMAScript 6 in the Wild
Ecma6 in the wild
JS awesomeness or how will ES6 help me build better apps ?
Fitc whats new in es6 for web devs
Workshop JavaScript ES6+
ES6, A Look Into Your Future
JavaScript ES6
Hands on: The sexy side of JavaScript (feat. node.js)
Progressive transpilation and the road to ES2015 in production
Responsive, adaptive and responsible - keynote at NebraskaJS
2017-web-development-readthedocs-io-en-latest.pdf
React Basic and Advance || React Basic
Effective ES6
ECMAScript 6: A Better JavaScript for the Ambient Computing Era
Introduction to es6
ECMAScript 2015

More from Christian Heilmann (20)

PPTX
Develop, Debug, Learn? - Dotjs2019
PDF
Hinting at a better web
PDF
Taking the "vile" out of privilege
PDF
Seven ways to be a happier JavaScript developer - NDC Oslo
PDF
Artificial intelligence for humans… #AIDC2018 keynote
PDF
Killing the golden calf of coding - We are Developers keynote
PDF
Progressive Web Apps - Techdays Finland
PDF
Taking the "vile" out of privilege
PDF
Five ways to be a happier JavaScript developer
PDF
Taking the P out of PWA
PDF
Sacrificing the golden calf of "coding"
PDF
You learned JavaScript - now what?
PDF
Sacrificing the golden calf of "coding"
PDF
Progressive Web Apps - Covering the best of both worlds - DevReach
PDF
Progressive Web Apps - Covering the best of both worlds
PPTX
Non-trivial pursuits: Learning machines and forgetful humans
PDF
Progressive Web Apps - Bringing the web front and center
PDF
CSS vs. JavaScript - Trust vs. Control
PDF
Leveling up your JavaScipt - DrupalJam 2017
PDF
The Soul in The Machine - Developing for Humans (FrankenJS edition)
Develop, Debug, Learn? - Dotjs2019
Hinting at a better web
Taking the "vile" out of privilege
Seven ways to be a happier JavaScript developer - NDC Oslo
Artificial intelligence for humans… #AIDC2018 keynote
Killing the golden calf of coding - We are Developers keynote
Progressive Web Apps - Techdays Finland
Taking the "vile" out of privilege
Five ways to be a happier JavaScript developer
Taking the P out of PWA
Sacrificing the golden calf of "coding"
You learned JavaScript - now what?
Sacrificing the golden calf of "coding"
Progressive Web Apps - Covering the best of both worlds - DevReach
Progressive Web Apps - Covering the best of both worlds
Non-trivial pursuits: Learning machines and forgetful humans
Progressive Web Apps - Bringing the web front and center
CSS vs. JavaScript - Trust vs. Control
Leveling up your JavaScipt - DrupalJam 2017
The Soul in The Machine - Developing for Humans (FrankenJS edition)

Recently uploaded (20)

PDF
Keanu Reeves Beyond the Legendary Hollywood Movie Star.pdf
PPTX
History ATA Presentation.pptxhttps://www.slideshare.net/slideshow/role-of-the...
DOC
NSCAD毕业证学历认证,温哥华岛大学毕业证国外证书制作申请
PPTX
SPARSH-SVNITs-Annual-Cultural-Fest presentation for orientation
DOCX
Nina Volyanska Controversy in Fishtank Live_ Unraveling the Mystery Behind th...
PDF
High-Quality PDF Backlinking for Better Rankings
DOCX
Lambutchi Calin Claudiu had a discussion with the Buddha about the restructur...
PPTX
Hacking Movie – Best Films on Cybercrime & Digital Intrigue
PPTX
The story of Nomuzi and the way she was living
PPTX
providenetworksystemadministration.pptxhnnhgcbdjckk
PPT
business model and some other things that
PPTX
TOEFL ITP Grammar_ Structure & Written Expression.pptx
PPTX
the Honda_ASIMO_Presentation_Updated.pptx
PDF
WKA #29: "FALLING FOR CUPID" TRANSCRIPT.pdf
PDF
Gess1025.pdfdadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
PPTX
wegen seminar ppt.pptxhkjbkhkjjlhjhjhlhhvg
PPTX
What Makes an Entertainment App Addictive?
PDF
Ct.pdffffffffffffffffffffffffffffffffffff
PDF
A New Kind of Director for a New Kind of World Why Enzo Zelocchi Matters More...
PDF
TAIPANQQ SITUS MUDAH MENANG DAN MUDAH MAXWIN SEGERA DAFTAR DI TAIPANQQ DAN RA...
Keanu Reeves Beyond the Legendary Hollywood Movie Star.pdf
History ATA Presentation.pptxhttps://www.slideshare.net/slideshow/role-of-the...
NSCAD毕业证学历认证,温哥华岛大学毕业证国外证书制作申请
SPARSH-SVNITs-Annual-Cultural-Fest presentation for orientation
Nina Volyanska Controversy in Fishtank Live_ Unraveling the Mystery Behind th...
High-Quality PDF Backlinking for Better Rankings
Lambutchi Calin Claudiu had a discussion with the Buddha about the restructur...
Hacking Movie – Best Films on Cybercrime & Digital Intrigue
The story of Nomuzi and the way she was living
providenetworksystemadministration.pptxhnnhgcbdjckk
business model and some other things that
TOEFL ITP Grammar_ Structure & Written Expression.pptx
the Honda_ASIMO_Presentation_Updated.pptx
WKA #29: "FALLING FOR CUPID" TRANSCRIPT.pdf
Gess1025.pdfdadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
wegen seminar ppt.pptxhkjbkhkjjlhjhjhlhhvg
What Makes an Entertainment App Addictive?
Ct.pdffffffffffffffffffffffffffffffffffff
A New Kind of Director for a New Kind of World Why Enzo Zelocchi Matters More...
TAIPANQQ SITUS MUDAH MENANG DAN MUDAH MAXWIN SEGERA DAFTAR DI TAIPANQQ DAN RA...

The ES6 Conundrum - All Things Open 2015

  • 1. THE ES6 CONUNDRUM ADVANCING JAVASCRIPT WITHOUT BREAKING THE WEB CHRIS HEILMANN @CODEPO8 ALL THINGS OPEN 2015
  • 2. TODAY, I WANT TO TALK TO YOU ABOUT JAVASCRIPT…
  • 3. JAVASCRIPT IS… • An incredibly versatile language • Available web-‐wide and across many platforms • Toolset independent • Forgiving and inviting
  • 4. YOU CAN USE JAVASCRIPT • In browsers on the web • On the server • In applications • To access services • As a data format (﴾JSON)﴿ • On hardware • … your turn, surprise me :)﴿
  • 5. THE FLEXIBILITY OF JAVASCRIPT MAKES ALL OF THIS POSSIBLE…
  • 6. JAVASCRIPT IS IN SUPER HIGH DEMAND! https://www.google.com/trends/explore#q=undefined%20is%20not%20a%20function
  • 7. WE’RE GOING FULL SPEED ON INNOVATION… • Componentised Web • Extensible Web Manifesto • WebGL • WebAssembly/ASM.js • PostCSS • Progressive Apps
  • 9. JAVA IS TO JAVASCRIPT LIKE HAM IS TO HAMSTER
  • 10. 1997 2015 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 1997 ECMAScript1 1998 ECMAScript2 1999 ECMAScript3 2005 -‐ 2007 ECMAScript4 -‐ Abandoned 2009 ECMAScript5 2015 ECMAScript6 IT’S BEEN A BUMPY RIDE…
  • 11. 1997 2015 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 1997 ECMAScript1 1998 ECMAScript2 1999 ECMAScript3 2005 -‐ 2007 ECMAScript4 -‐ Abandoned 2009 ECMAScript5 2015 ECMAScript6 …NOW WE HAVE ES6! • 5+ years since ES5 ratification • Significant changes in 15+ years • Backwards compatible • Ratified June 2015 http://www.ecma-‐international.org/publications/standards/Ecma-‐262.htm
  • 14. 3MB OF BLOCKING JAVASCRIPT BEFORE THE FIRST WORD APPEARS ON THE PAGE!
  • 15. WE BREAK THE WEB FOR THE SAKE OF DEVELOPER CONVENIENCE…
  • 16. THE JAVASCRIPT LEARNING PROCESS HAS ALWAYS BEEN INTERESTING… • Use view source to see what others are doing… • Copy and paste the bits that look like they are responsible for some things • Change some numbers around • Run into errors • Blame Internet Explorer
  • 17. THIS, OF COURSE, WAS WRONG AND WE GOT MORE PROFESSIONAL… • Search for a solution on Stackoverflow • Copy and paste the bits that look like they are responsible for some things • Change some numbers around • Run into errors • Blame JavaScript for being terrible and not a real language • For good measure, blame Internet Explorer.
  • 18. IF YOU THINK JAVASCRIPT, THINK ESCALATORS.
  • 19. EMBRACING ES6 PROMOTES JS FROM A HACK TO A LANGUAGE TO BUILD LARGE PRODUCTS WITH.
  • 20. • Arrow functions as a short-hand version of an anonymous function. • Block-level scope using let instead of var makes variables scoped to a block (if, for, while, etc.) • Classes to encapsulate and extend code. • Constants using the const keyword. • Default parameters for functions like foo(bar = 3, baz = 2) • Destructuring to assign values from arrays or objects into variables. • Generators that create iterators using function* and the yield keyword. • Map, a Dictionary type object that can be used to store key/value pairs. and Set as a collection object to store a list of data values. • Modules as a way of organizing and loading code. • Promises for async operations avoiding callback hell • Rest parameters instead of using arguments to access functions arguments. • Template Strings to build up string values including multi-line strings. ES6 COMES WITH SO MUCH GOODNESS, TECHNICALLY IT HAS TO BE FATTENING…
  • 21. Library Builders map, set & weakmap __proto__ Proxies Symbols Sub7classable built7ins Scalable Apps let, const & block7 scoped bindings Classes Promises Iterators Generators Typed arrays Modules Syntactic Sugar Arrow functions Enhanced object literals Template strings Destructuring Rest, Spread, Default String, Math, Number, Object, RegExp APIs ALL OF THESE PARTS HAVE DIFFERENT AUDIENCES
  • 22. SUPPORT IS ENCOURAGING (﴾EDGE, FIREFOX, CHROME, SAFARI (﴾ON 9)﴿)﴿ http://kangax.github.io/compat-table/es6/
  • 23. NUMBERS! Current status (﴾October 2015)﴿: Desktop: Edge 13: 80% Firefox 42: 71% Chrome 47/Opera 34: 63 % Safari 9: 54% (﴾former 21%!)﴿ Mobile: Android 5.1: 29% iOS9: 54% http://kangax.github.io/compat-table/es6/
  • 24. THE PROBLEM: FOR NON-‐SUPPORTING BROWSERS, ES6 FEATURES ARE SYNTAX ERRORS…
  • 25. THE SOLUTION: TRANSPILING INTO ES5… https://babeljs.io • Converts ES6 to older versions on the server or the client • In use by Facebook and many others • Used in editors and tool chains
  • 26. ✘ Extra step between writing code and running it in the browser. ✘ We don’t run or debug the code we write. ✘ We hope the transpiler creates efficient code ✘ We create a lot of code ✘ Browsers that support ES6 will never get any. THE PROBLEMS WITH TRANSPILING:
  • 28. ✘ It is an extra step that might be costly ✘ We can only do it client-‐side ✘ We can get false positives -‐ experimental features might be implemented in a rudimentary fashion ✘ We have to keep your feature tests up-‐to-‐date and extend them as needed -‐ support for one feature doesn’t mean support for another. THE PROBLEMS WITH FEATURE TESTING:
  • 29. YOU CAN USE AN ABSTRACTION, FRAMEWORK OR LIBRARY THAT HAS SIMILAR FEATURES…
  • 30. ✘ They makes us dependent on that abstraction ✘ We can’t control possible version clashes in the abstraction layer ✘ Maintainers need to know the abstraction instead of the standard of ES6 PROBLEMS WITH ANY ABSTRACTION
  • 31. THE ES6 CONUNDRUM… • We can’t use it safely in the wild • We can use TypeScript or transpile it • We can feature test for it, but that can get complex quickly • Browsers that support it, will not get any ES6 that way (﴾but can use it internally)﴿ • The performance is bad right now (﴾which is a normal thing)﴿. To improve this, we need ES6 to be used in the wild… http://www.sitepoint.com/the-‐es6-‐conundrum/
  • 32. TEST ES6 PERFORMANCE http://kpdecker.github.io/six-‐speed/
  • 33. YOU CAN HELP MAKE THIS BETTER!
  • 34. BE ACTIVE! If you use JavaScript in an environment you control, please use ES6 and feed back your experiences to the browser creators and the standard bodies.
  • 35. HELP ES6 BY LOOKING AT ITS UNIT TESTS… https://github.com/tc39/test262 http://test262.ecmascript.org/
  • 36. YOU CAN LEARN AND FIX ISSUES. http://es6katas.org
  • 37. SEE THE BABEL.JS DOCS AND TRY IT IN THE BROWSER… https://babeljs.io/docs/learn-‐es2015/
  • 39. READ THE EXCELLENT BOOK EXPLORING ES6 FOR FREE (﴾OR BUY IT, AXEL DESERVES SUPPORT)﴿ http://exploringjs.com/es6/
  • 40. JAVASCRIPT HAD A BUMPY RIDE, AND MANY PREJUDICES PERSIST. OPEN YOUR MIND AND LEARN HOW FAR IT IS COME AND WHAT IT CAN DO FOR YOU.