└── readme.md /readme.md: -------------------------------------------------------------------------------- 1 | ## ES.next showcase 2 | 3 | 4 | 5 | > Showcasing real-world usage of [ECMAScript 2015 features](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts) in today's libraries/frameworks/projects/etc 6 | 7 | 8 | These projects make use of ES2015 features. Dig into their source, learn, and [try out ES2015](http://benvie.github.io/continuum/) yourself! 9 | 10 | There's already a lot of [tooling](https://github.com/addyosmani/es6-tools) that lets you develop with ES2015 *today*. 11 | 12 | - 13 | 14 | ### [AngularJS 2.0](http://blog.angularjs.org/2014/03/angular-20.html) 15 | 16 | > All code in AngularJS 2 is already being written in ES2015 *(actually TypeScript, but it's a superset of ES2015)*. 17 | 18 | - Features: [Modules][], [Classes][], [Arrow functions][], [Promises][] 19 | - Transpiler: [Traceur][traceur] 20 | 21 | 22 | ### [ember.js](https://github.com/emberjs/ember.js/tree/master/packages) 23 | 24 | > We'll make modules a first-class citizen, and soon every developer who starts using Ember will also be using ES2015 modules. 25 | 26 | - Features: [Modules][], [Promises][] 27 | - Transpiler: [ES2015 Module Transpiler][es2015-module-transpiler] 28 | 29 | 30 | ### [tpyo](https://github.com/mathiasbynens/tpyo) 31 | 32 | > Enables support for typos in JavaScript property names. Powered by ES2015 proxies + Levenshtein string distance. 33 | 34 | - Features: [Proxy][] 35 | 36 | 37 | ### [negative-array](https://github.com/sindresorhus/negative-array) 38 | 39 | > Negative array index support `array[-1]` using ES2015 Proxy 40 | 41 | - Features: [Proxy][] 42 | 43 | 44 | ### [stevia](https://github.com/traviskaufman/stevia) 45 | 46 | > Natural sweetening for JavaScript objects using ES2015 Proxy 47 | 48 | - Features: [Proxy][] 49 | 50 | 51 | ### [Backbone TodoMVC + ECMAScript 6](https://github.com/addyosmani/traceur-todomvc/) 52 | 53 | > Backbone TodoMVC rewritten using ES2015 54 | 55 | - Features: [Modules][], [Block Scoped Bindings][block-scoped-bindings], [Classes][], Spread operator, [Arrow functions][], Default parameters 56 | - Transpiler: [Traceur][traceur] 57 | 58 | 59 | ### [Ember Extension](https://github.com/tildeio/ember-extension) 60 | 61 | > Adds an Ember tab to chrome dev tools that allows you to inspect Ember objects in your application. 62 | 63 | - Features: [Modules][], [Promises][] 64 | - Transpiler: [ES2015 Module Transpiler][es2015-module-transpiler] 65 | 66 | 67 | ### [hyperagent.js](https://github.com/weluse/hyperagent) 68 | 69 | > A HAL client for JavaScript 70 | 71 | - Features: [Modules][] 72 | - Transpiler: [ES2015 Module Transpiler][es2015-module-transpiler] 73 | 74 | 75 | ### [rsvp.js](https://github.com/tildeio/rsvp.js) 76 | 77 | > A lightweight library that provides tools for organizing asynchronous code 78 | 79 | - Features: [Modules][] 80 | - Transpiler: [ES2015 Module Transpiler][es2015-module-transpiler] 81 | 82 | 83 | ### [router.js](https://github.com/tildeio/router.js) 84 | 85 | > A lightweight JavaScript library that builds on route-recognizer to provide an API for handling routes 86 | 87 | - Features: [Modules][] 88 | - Transpiler: [ES2015 Module Transpiler][es2015-module-transpiler] 89 | 90 | 91 | ### [json-normalizer](https://github.com/tildeio/json-normalizer) 92 | 93 | > A small, lightweight library for normalizing JSON properties and values 94 | 95 | - Features: [Modules][] 96 | - Transpiler: [ES2015 Module Transpiler][es2015-module-transpiler] 97 | 98 | 99 | ### [htmlbars](https://github.com/tildeio/htmlbars) 100 | 101 | > A variant of Handlebars that emits DOM and allows you to write helpers that manipulate live DOM nodes 102 | 103 | - Features: [Modules][] 104 | - Transpiler: [ES2015 Module Transpiler][es2015-module-transpiler] 105 | 106 | ### [defs.js][] 107 | 108 | > Static scope analysis and transpilation of ES2015 block scoped const and let variables to ES3 vars 109 | 110 | - Features: [Block Scoped Bindings (const, let)][block-scoped-bindings] 111 | - Transpiler: [defs.js][] 112 | 113 | ### [Templating](https://github.com/angular/templating) 114 | 115 | > The templating engine for Angular 2.0. 116 | 117 | - Features: [Modules][], [Classes][], [Arrow functions][], [Promises][] 118 | - Transpiler: [Traceur][traceur] 119 | 120 | ### [di](https://github.com/angular/di.js) 121 | 122 | > Dependency Injection Framework for the future generations... 123 | 124 | - Features: [Modules][], [Classes][], [Arrow functions][], [Promises][] 125 | - Transpiler: [Traceur][traceur] 126 | 127 | ### [ngHttp](https://github.com/angular/ngHttp) 128 | 129 | > Data Persistence 130 | 131 | - Features: [Modules][], [Classes][], [Arrow functions][], [Promises][] 132 | - Transpiler: [Traceur][traceur] 133 | 134 | ### [Watchtower](https://github.com/angular/watchtower.js) 135 | 136 | > Super-fast change detection 137 | 138 | - Features: [Modules][], [Classes][], [Arrow functions][], [Promises][] 139 | - Transpiler: [Traceur][traceur] 140 | 141 | ### [Expressionist](https://github.com/angular/expressionist.js) 142 | 143 | > Expression parser 144 | 145 | - Features: [Modules][], [Classes][], [Arrow functions][], [Promises][] 146 | - Transpiler: [Traceur][traceur] 147 | 148 | ### [Diary](https://github.com/angular/diary.js) 149 | 150 | > Flexible logging and profiling library for JavaScript 151 | 152 | - Features: [Modules][], [Classes][], [Arrow functions][], [Promises][] 153 | - Transpiler: [Traceur][traceur] 154 | 155 | ### [Deferred](https://github.com/angular/deferred) 156 | 157 | > This project makes available an ES2015 Deferred implementation, using ES2015 Promises 158 | 159 | - Features: [Modules][], [Classes][], [Arrow functions][], [Promises][] 160 | - Transpiler: [Traceur][traceur] 161 | 162 | ### [varify](https://github.com/thlorenz/varify) 163 | 164 | > browserify transform that converts all const assignments to var assignments. 165 | 166 | - Features: [const](http://wiki.ecmascript.org/doku.php?id=harmony:const) immutability support only, **no block scope** 167 | - Transpiler: [varify](https://github.com/thlorenz/varify) 168 | 169 | 170 | ### [catiline](https://github.com/calvinmetcalf/catiline) 171 | 172 | > Small library for using workers in the browser. 173 | 174 | - Features: [Block Scoped Bindings (const, let)][block-scoped-bindings] 175 | - Transpiler: [defs.js][] 176 | 177 | 178 | ### [DOMtastic](https://github.com/webpro/DOMtastic) 179 | 180 | > Small & fast DOM and event library for modern browsers. 181 | 182 | - Features: [Modules][], [Arrow functions][], [Spread][], [Default Parameter Values][default-parameter-values] 183 | - Transpiler: [Traceur][traceur] 184 | 185 | 186 | ### [Koa](https://github.com/koajs/koa) 187 | 188 | > Expressive middleware for node.js using generators to make web applications and APIs more enjoyable to write. 189 | 190 | - Features: [Generators][] 191 | 192 | 193 | ### [Co](https://github.com/visionmedia/co) 194 | 195 | > Generator based flow-control goodness using thunks or promises, letting you write non-blocking code in a nice-ish way. 196 | 197 | - Features: [Generators][], [Promises][] 198 | 199 | 200 | ### [Shen](https://github.com/cultofmetatron/Shen) 201 | 202 | > Higher order flow control functions for creating generators. 203 | 204 | - Features: [Generators][] 205 | 206 | 207 | ### [task.js](https://github.com/mozilla/task.js) 208 | 209 | > Beautiful concurrency for JavaScript. 210 | 211 | - Features: [Generators][] 212 | 213 | 214 | ### [aleph-box](https://github.com/sudodoki/aleph-box) 215 | 216 | > Wrapper for [Chance.js](http://chancejs.com/) that let's you get random properties without any explicit method calls, i.e.: `alephInstance.children.map(function (c) { return c.name; });`. 217 | 218 | - Features: [Proxy][] 219 | 220 | 221 | ## Features 222 | 223 | - [Modules][] 224 | - [Block Scoped Bindings][block-scoped-bindings] 225 | - [Proxy][] 226 | - [Generators][] 227 | - [Classes][] 228 | - [Arrow functions][] 229 | - [Spread][] 230 | - [Default Parameter Values][default-parameter-values] 231 | - [Promises][] 232 | 233 | 234 | ## Transpilers 235 | 236 | - [Traceur][] 237 | - [esnext][] 238 | - [babel][] 239 | - [ES2015 Module Transpiler][es2015-module-transpiler] 240 | - [defs.js][] 241 | - [Regenerator — Facebook’s ES2015 generator transpiler](http://facebook.github.io/regenerator/) 242 | - [illusionist][] 243 | 244 | 245 | ## Reading material 246 | 247 | - [ECMAScript 6 specification](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts) 248 | - [ECMAScript 6 compatibility table](http://kangax.github.io/es5-compat-table/es6/) 249 | - [A Few New Things Coming To JavaScript](http://addyosmani.com/blog/a-few-new-things-coming-to-javascript/) 250 | - [Author In ES2015, Transpile To ES5 As A Build-step: A Workflow For Grunt](http://addyosmani.com/blog/author-in-es6-transpile-to-es5-as-a-build-step-a-workflow-for-grunt/) 251 | - [ES3 \<3 block scoped const and let => defs.js](http://blog.lassus.se/2013/05/defsjs.html) 252 | - [An aggregation of tooling for ES2015](https://github.com/addyosmani/es6-tools) 253 | - [Overview of ECMAScript 6 features](https://github.com/lukehoban/es6features) 254 | - [Understanding ECMAScript 6](https://github.com/nzakas/understandinges6) *(ebook)* 255 | - [ECMAScript 6 examples for Node.JS](https://github.com/JustinDrake/node-es6-examples) 256 | - [ECMASCript 2015 series on @medium](https://medium.com/ecmascript-2015) 257 | 258 | [modules]: http://wiki.ecmascript.org/doku.php?id=harmony:modules 259 | [block-scoped-bindings]: http://wiki.ecmascript.org/doku.php?id=harmony:block_scoped_bindings 260 | [proxy]: http://soft.vub.ac.be/~tvcutsem/proxies/ 261 | [generators]: http://wiki.ecmascript.org/doku.php?id=harmony:Generators 262 | [classes]: http://wiki.ecmascript.org/doku.php?id=strawman:maximally_minimal_classes 263 | [arrow functions]: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax 264 | [spread]: http://wiki.ecmascript.org/doku.php?id=harmony:spread 265 | [default-parameter-values]: http://wiki.ecmascript.org/doku.php?id=harmony:parameter_default_values 266 | [promises]: http://wiki.ecmascript.org/doku.php?id=strawman:promises 267 | 268 | [traceur]: https://github.com/google/traceur-compiler 269 | [esnext]: https://github.com/square/esnext 270 | [babel]: https://github.com/babel/babel 271 | [es2015-module-transpiler]: https://github.com/square/es6-module-transpiler 272 | [defs.js]: https://github.com/olov/defs 273 | [illusionist]: https://github.com/mirego/illusionist 274 | 275 | 276 | ## License 277 | 278 | [![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/) 279 | 280 | To the extent possible under law, [Sindre Sorhus](http://sindresorhus.com) has waived all copyright and related or neighboring rights to this work. This work is published from: Norway. 281 | --------------------------------------------------------------------------------