├── LICENSE ├── README.md ├── build └── README.md ├── package.json └── scripts └── cleanup.js /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Eric Elliott 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Essential JavaScript Links 2 | 3 | A curated list by Eric Elliott and friends. Suggest links in the [gist comments](https://gist.github.com/ericelliott/d576f72441fc1b27dace#comment-1365676). 4 | 5 | [Help us turn this into a proper website!](https://github.com/ericelliott/essential-javascript-links/issues) 6 | 7 | This is a very exclusive collection of only must-have JavaScript links. I'm only listing my favorite links. Nothing else makes the cut. Feel free to suggest links if you think they're good enough to make this list. The really curious should feel free to browse the comments to find other links. I can't guarantee the quality of links in the comments. 8 | 9 | ## Full Disclosure 10 | 11 | Some of these links are affiliate links, meaning that if you make a purchase, I might earn a little money. **This has absolutely no bearing on whether or not links make the list.** *None, whatsoever.* However, it does allow me more resources to **[fight poverty with code](https://medium.com/the-backer-army/fighting-poverty-with-code-d1ed3ebd982d)**. *Every little bit counts.* 12 | 13 | 14 | ## Required Reading (Online resources) 15 | 16 | * [Learn JavaScript Essentials (for all skill levels)](https://medium.com/javascript-scene/learn-javascript-b631a4af11f2) - One clear path to JavaScript mastery 17 | * [JavaScript Training Sucks](https://medium.com/javascript-scene/javascript-training-sucks-284b53666245) 99 out of 100 JS developers lack the skills they need to fill hundreds of thousands of jobs. We can change that. 18 | * [The Two Pillars of JavaScript Part 1: Prototypal OO](https://medium.com/javascript-scene/the-two-pillars-of-javascript-ee6f3281e7f3) 19 | * [The Two Pillars of JavaScript Part 2: Functional Programming](https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4) 20 | * [JavaScript Objects](http://davidwalsh.name/javascript-objects) An excellent explanation of inheritance in JavaScript by Kyle Simpson 21 | * [Isomorphic JavaScript](http://isomorphic.net/) 22 | * [JavaScript Application Architecture on the Road to 2015](https://medium.com/@addyosmani/javascript-application-architecture-on-the-road-to-2015-d8125811101b) - Addy Osmani 23 | * [Reactive MVC and the Virtual DOM](http://futurice.com/blog/reactive-mvc-and-the-virtual-dom) Great read, even if you're not a React user. 24 | * [Introduction to Reactive Programming](https://gist.github.com/staltz/868e7e9bc2a7b8c1f754) 25 | * [The General Theory of Reactivity](https://github.com/kriskowal/gtor) What is all this talk about reactive? Functional? Promises? This is the beginning of a reactive programming bible. 26 | * [ES6 Generators](http://davidwalsh.name/es6-generators) A series of blog posts by Kyle Simpson 27 | * [Typed JavaScript](http://www.2ality.com/2014/10/typed-javascript.html) - Excellent post about the state of typed JavaScript by Axel Rauschmayer 28 | * [Taming the Asynchronous Beast with CSP in JavaScript](http://jlongster.com/Taming-the-Asynchronous-Beast-with-CSP-in-JavaScript) - James Long 29 | * [ES6 Modules: The Final Syntax](http://www.2ality.com/2014/09/es6-modules-final.html) by @rauschma #AMDisDead 30 | 31 | 32 | ## Required Viewing 33 | * [Classical Inheritance is Obsolete: How to Think in Prototypal OO](https://vimeo.com/69255635) - by [Eric Elliott](https://twitter.com/_ericelliott) 34 | * [Asynchronous Programming at Netflix](https://www.youtube.com/watch?v=gawmdhCNy-A) - [Jafar Husain](https://twitter.com/jhusain) 35 | * [David Nolen: Immutability: Putting The Dream Machine To Work](https://www.youtube.com/watch?v=SiFwRtCnxv4) - [David Nolen](https://twitter.com/swannodette) 36 | * [Immutable Data and React](https://www.youtube.com/watch?v=I7IdS-PbEgI&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr) by [Lee Byron](https://twitter.com/leeb) 37 | * [Delivering the Goods](https://www.youtube.com/watch?v=R8W_6xWphtw) Paul Irish on one of the most important but overlooked topics in the development world today - page load times. 38 | * [Simplicity Matters](https://www.youtube.com/watch?v=rI8tNMsozo0) A later version of the influential talk, "Simple Made Easy" by [Rich Hickey](https://twitter.com/richhickey) 39 | 40 | 41 | ## Spec 42 | 43 | * [ES5 Spec](http://es5.github.io/) An annotated, hyperlinked version of the ES5 spec 44 | * [ES6 draft](https://people.mozilla.org/~jorendorff/es6-draft.html) 45 | 46 | 47 | ## Books 48 | 49 | * [JavaScript for Kids](http://www.amazon.com/gp/product/B00QL616QE?ie=UTF8&camp=213733&creative=393177&creativeASIN=B00QL616QE&linkCode=shr&tag=ericleads-20&linkId=6AOODC27L6URY3K2) 50 | * [Eloquent JavaScript](http://eloquentjavascript.net/) 51 | * [JavaScript: The Good Parts](http://www.amazon.com/gp/product/0596517742?ie=UTF8&camp=213733&creative=393185&creativeASIN=0596517742&linkCode=shr&tag=ericleads-20&linkId=IJKESYSOTWGC27DR) 52 | * [Effective JavaScript](http://www.amazon.com/gp/product/0321812182?ie=UTF8&camp=213733&creative=393185&creativeASIN=0321812182&linkCode=shr&tag=ericleads-20&linkId=JIC63I267I6UDQQZ) 53 | * [Programming JavaScript Applications](http://pjabook.com) 54 | * [JavaScript: The Definitive Guide](http://www.amazon.com/gp/product/0596805527?ie=UTF8&camp=213733&creative=393185&creativeASIN=0596805527&linkCode=shr&tag=ericleads-20&linkId=AENIF5KLRQI3N335) 55 | * [You Don't Know JS](https://github.com/getify/You-Dont-Know-JS) 56 | * [Understanding ECMAScript 6](https://leanpub.com/understandinges6/read/) by Nicholas C. Zakas 57 | * [Node.js in Action](http://www.manning.com/cantelon/) 58 | * [The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal](http://www.amazon.com/gp/product/0670899763?ie=UTF8&camp=213733&creative=393177&creativeASIN=0670899763&linkCode=shr&tag=ericleads-20&linkId=NDUXYQOCMPC47SQI) 59 | 60 | 61 | ## Dev tools & collaboration 62 | 63 | * [nvm](https://github.com/creationix/nvm) First install this... 64 | * [Node](http://nodejs.org/) Then install Node (with nvm). You'll need this even if you're a front-end dev. 65 | * [npm](https://www.npmjs.com/) Install lots of other things with npm. **The package manager for JavaScript.** Comes with Node. 66 | * [Sublime Text 3](http://www.sublimetext.com/3) 67 | * [Node Inspector](https://github.com/node-inspector/node-inspector) Debug Node code with the Chrome debug tools 68 | * [TraceGL](https://github.com/traceglMPL/tracegl) Powerful runtime analysis of live JavaScript code 69 | * [Tern](http://ternjs.net/) Static analysis in JavaScript 70 | * [JSDoc](http://usejsdoc.org/) - Pair with [Tern](http://ternjs.net/) for static analysis 71 | * [Nitrous.IO](https://www.nitrous.io/join/uJcRo6yQDvs?utm_source=nitrous.io&utm_medium=copypaste&utm_campaign=referral) (Supports live collaboration / pair programming) 72 | * [Slack](http://slack.com) Chat for teams, with GitHub and Google hangouts integration 73 | * For hangouts, just type /hangout in any channel 74 | * [PrettyDiff](http://prettydiff.com/) 75 | * [ES6 Fiddle](http://www.es6fiddle.net/) 76 | 77 | 78 | ## Building 79 | 80 | * [Browserify](http://browserify.org/) Bundle modules for the browser. 81 | * [How to use NPM as a Build Tool](http://blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/) 82 | 83 | 84 | ### Testing / Lint / Quality checkers 85 | 86 | * [JSHint](http://jshint.com/) 87 | * [ESLint](http://eslint.org/) 88 | * [Istanbul](https://github.com/gotwarlost/istanbul) Code coverage reporting 89 | * [tape](https://github.com/substack/tape) Minimal, dead simple unit testing. (This is all you need, really!) 90 | * [faucet](https://github.com/substack/faucet) Prettify unit testing output (like what comes from tape). 91 | * [Supertest](https://github.com/tj/supertest) The best way to test HTTP endpoints. 92 | 93 | 94 | ### Transpilers 95 | 96 | * [6to5](https://github.com/6to5/6to5) (ES6) 97 | * [CoffeeScript](http://coffeescript.org/) 98 | * [Emscripten](http://kripken.github.io/emscripten-site/) (frequently used for C/C++ JavaScript ports) 99 | * [Traceur](https://github.com/google/traceur-compiler) (ES.next) 100 | * [ES6 tools](https://github.com/addyosmani/es6-tools) Addy Osmani's ES6 Tools list 101 | 102 | 103 | ## JavaScript environments 104 | 105 | * [Node.js](http://nodejs.org/) Server side JavaScript and more 106 | * [io.js](https://iojs.org/) - The Node fork 107 | 108 | 109 | ## Libraries 110 | 111 | * [es5-shim](https://github.com/es-shims/es5-shim) Stable, production ready. 112 | * [es6-shim](https://github.com/es-shims/es6-shim/) Somewhat stable, but a few things I thought were solid got shifted to ES7. 113 | * [es7-shim](https://www.npmjs.com/package/es7-shim) Experimantal. Use with caution. 114 | * [HTML5 Cross Browser Polyfills](https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills) A fairly comprehensive list of HTML5 API polyfills. 115 | * [HTML5 Boilerplate](https://github.com/h5bp/html5-boilerplate) You'll want to cherry-pick the best of this for your production apps. See [Initializr](http://www.initializr.com). 116 | * [The Isomorphic Express Boilerplate](https://github.com/ericelliott/isomorphic-express-boilerplate) Write apps using the same code for both the client and the server using Node, Express, and Browserify. 117 | * [rootrequire](https://github.com/ericelliott/rootrequire) Require files relative to your project path using the normal node require(). 118 | * [native-promise-only](https://github.com/getify/native-promise-only) An ECMAScript standard promise polyfill by Kyle Simpson. 119 | * [isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch) A [WHATWG fetch](https://fetch.spec.whatwg.org/). standard polyfill. 120 | * [sseasy](https://github.com/heroku/sseasy) Server Sent Events for Node (HTML5 standard push notifications). 121 | * [EventSource browser Polyfill](https://github.com/Yaffle/EventSource/) Required client-side patching to support Server Sent Events. 122 | * [jQuery](http://jquery.com/) Yes, [I still use jQuery](https://docs.google.com/document/d/1LPaPA30bLUB_publLIMF0RlhdnPx_ePXm7oW02iiT6o/edit#) and so do 61% of the top 100,000 websites - for good reason. 123 | * [Blaze](http://meteor.github.io/blaze/) DOM-diffing isomorphic reactive templates from Meteor. 124 | * [RxJS](https://github.com/Reactive-Extensions/RxJS) Reactive extensions for JavaScript. [What's reactive?](https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4) 125 | * [Page.js](https://github.com/visionmedia/page.js) Tiny client-side router, inspired by Express. 126 | * [Moment](http://momentjs.com/docs/) A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates. 127 | * [Globalize](https://github.com/jquery/globalize) i18n / translate your app for many languages and locations (locales) 128 | * [Express](http://expressjs.com/) The most popular framework for Node. 129 | * [Stampit](https://github.com/ericelliott/stampit) Stampit - create objects from reusable, composable behaviors. Prototypal inheritance with stamps. 130 | * [Credential](https://github.com/ericelliott/credential) If you write Node apps with password logins, you need Credential. 131 | * [cuid](https://github.com/ericelliott/cuid) GUIDs are broken - use cuid, instead. 132 | * [velocity](http://julian.com/research/velocity/) & [Velocity Motion Designer (VMD)](http://julian.com/research/velocity/#vmd) UI animation library. 133 | * [json-schema](https://github.com/kriszyp/json-schema) - Great for model validations. 134 | 135 | 136 | ## Web Components 137 | 138 | * [FIRST](http://addyosmani.com/first/) 139 | * [Polyfills](http://webcomponents.org/polyfills/) 140 | * [HTML Imports](http://webcomponents.org/articles/introduction-to-html-imports/) 141 | * [Custom Elements](http://webcomponents.org/articles/introduction-to-custom-elements/) 142 | * [Templates](http://webcomponents.org/articles/introduction-to-template-element/) 143 | * [Shadow DOM](http://webcomponents.org/articles/introduction-to-shadow-dom/) 144 | * [x-gif](http://geelen.github.io/x-gif/#/http://i.imgur.com/iKXH4E2.gif) This web component wins the internet. 145 | 146 | 147 | ## QA / Deployment / Monitoring / CI 148 | 149 | * [PM2](https://github.com/Unitech/pm2) Process monitoring / self repair 150 | * [New Relic](http://newrelic.com/) Deep insights into the performance and health of your production apps 151 | * [Sauce Labs](https://saucelabs.com/) Cross platform web application testing with great collaboration and integration support 152 | * [Travis CI](https://travis-ci.org/) CI, of course 153 | * [Docker](https://www.docker.com/) Run your CI process using the same OS configs as your production systems. 154 | * [Shippable](https://www.shippable.com/) Docker-based hosted build / CI 155 | 156 | 157 | ## Community 158 | 159 | * [ES Discuss](https://esdiscuss.org/) The mailing list where all the ECMAScript standard discussion action is. 160 | * [JavaScript on Google+](https://plus.google.com/communities/100875929141897651837) 161 | * [HTML5 on Google+](https://plus.google.com/communities/103299867207875326585) 162 | * [Node.js on Google+](https://plus.google.com/communities/115365528781941125390) 163 | * IRC ##JavaScript irc://irc.freenode.net/javascript 164 | * IRC #node.js irc://irc.freenode.net/node.js 165 | * IRC #io.js irc://irc.freenode.net/io.js - the Node fork 166 | 167 | 168 | ## News 169 | * [JavaScript Weekly](http://javascriptweekly.com/) 170 | * [Node Weekly](http://nodeweekly.com/) 171 | * [HTML5 Weekly](http://html5weekly.com/) 172 | * [EchoJS](http://www.echojs.com/) 173 | * [DailyJS](http://dailyjs.com/) 174 | * [JavaScript Jabber](http://devchat.tv/js-jabber/) 175 | 176 | 177 | ## Pasting / sharing code 178 | 179 | * [Codepen](http://codepen.io/pen/) 180 | * [RequireBin](http://requirebin.com/) 181 | 182 | 183 | ## Contests 184 | 185 | * [DemoJS](http://demojs.org/) The JavaScript demoscene party 186 | * [JS1k](http://js1k.com/) JavaScript demos in 1k of memory 187 | * [JS13k Games](http://js13kgames.com/) JavaScript games in 13k of memory 188 | * [FightCode game](http://fightcodegame.com/) program virtual battle bots and climb the leaderboard 189 | * [Node Knockout](http://nodeknockout.com/) The legendary Node competition 190 | 191 | 192 | ## Hackable Hardware 193 | 194 | * [Nodebots](http://nodebots.io/) 195 | * [Cylon](http://cylonjs.com/) 196 | * [Nodecopter](http://www.nodecopter.com/) 197 | * [Tessel](https://tessel.io/) 198 | * [Espruino](http://www.espruino.com/) 199 | 200 | 201 | ## Hosting 202 | 203 | * [DigitalOcean](https://www.digitalocean.com/?refcode=fdcfedac5208) 204 | 205 | ## For kids (and people who just love to have fun) 206 | 207 | * [JavaScript for Kids](http://www.amazon.com/gp/product/B00QL616QE?ie=UTF8&camp=213733&creative=393177&creativeASIN=B00QL616QE&linkCode=shr&tag=ericleads-20&linkId=6AOODC27L6URY3K2) 208 | * [LearnToMod](http://www.learntomod.com/) Mod Minecraft with JavaScript 209 | 210 | 211 | ## Twitter (alphabetical order) 212 | 213 | * [Addy Osmani](https://twitter.com/addyosmani) - App architecture expert, Chrome dev tools champion 214 | * [Angus Croll](https://twitter.com/angustweets) - Author, "If Hemingway Wrote JavaScript" 215 | * [Axel Rauschmayer](https://twitter.com/rauschma) - ES Next evangelist, author 216 | * [Brendan Eich](https://twitter.com/BrendanEich) - Created JavaScript 217 | * [David Nolen](https://twitter.com/swannodette) - Great functional programming content 218 | * [David Herman](https://twitter.com/littlecalculist) - Author, "Effective JavaScript" 219 | * [EchoJS](https://twitter.com/echojs) - News and links 220 | * [Eric Elliott](https://twitter.com/_ericelliott) - That's me. O'Reilly author. JavaScript architect. JS Instructor. 221 | * [Jafar Husain](https://twitter.com/jhusain) - Great talks on RxJS, ES next, etc... 222 | * [James Halliday](https://twitter.com/substack) aka Substack - author of ~one million~ Node modules you probably use. 223 | * [James Long](https://twitter.com/jlongster) - CSP, functional programming advocate, Mozilla developer 224 | * [JavaScript Cheerleader](https://twitter.com/JS_Cheerleader) - Mover & shaker, JavaScript evangelist, documentary film maker 225 | * [JavaScript Daily](https://twitter.com/JavaScriptDaily) - News and links 226 | * [Jordan Harband](https://twitter.com/ljharb) - Keeping us ahead of the JS curve 227 | * [Kyle Simpson](https://twitter.com/getify) - Author, YDKJS - O'Reilly, JS Instructor, open web evangelist 228 | * [Marijn Haverbeke](https://twitter.com/marijnjh) - Author, "Eloquent JavaScript" 229 | * [Nicholas C. Zakas](https://twitter.com/slicknet) - Author, speaker 230 | * [Nick Morgan](https://twitter.com/skilldrick) - Author, "JavaScript for Kids" 231 | * [Paul Irish](https://twitter.com/paul_irish) - Developer evangelist, Chrome dev tools champion 232 | * [Reginald Braithwaite](https://twitter.com/raganwald) - Author, "JavaScript Allongé", speaker, GitHub 233 | * [YDKJS](https://twitter.com/ydkjs) - You Don't Know JS, O'Reilly book series by Kyle Simpson 234 | -------------------------------------------------------------------------------- /build/README.md: -------------------------------------------------------------------------------- 1 | # Essential JavaScript Links 2 | 3 | A curated list by Eric Elliott and friends. Suggest links in the [gist comments](https://gist.github.com/ericelliott/d576f72441fc1b27dace#comment-1365676). 4 | 5 | [Help us turn this into a proper website!](https://github.com/ericelliott/essential-javascript-links/issues) 6 | 7 | This is a very exclusive collection of only must-have JavaScript links. I’m only listing my favorite links. Nothing else makes the cut. Feel free to suggest links if you think they’re good enough to make this list. The really curious should feel free to browse the comments to find other links. I can’t guarantee the quality of links in the comments. 8 | 9 | ## Full Disclosure 10 | 11 | Some of these links are affiliate links, meaning that if you make a purchase, I might earn a little money. **This has absolutely no bearing on whether or not links make the list.** *None, whatsoever.* However, it does allow me more resources to **[fight poverty with code](https://medium.com/the-backer-army/fighting-poverty-with-code-d1ed3ebd982d)**. *Every little bit counts.* 12 | 13 | 14 | ## Required Reading (Online resources) 15 | 16 | * [Learn JavaScript Essentials (for all skill levels)](https://medium.com/javascript-scene/learn-javascript-b631a4af11f2) — One clear path to JavaScript mastery 17 | * [JavaScript Training Sucks](https://medium.com/javascript-scene/javascript-training-sucks-284b53666245) 99 out of 100 JS developers lack the skills they need to fill hundreds of thousands of jobs. We can change that. 18 | * [The Two Pillars of JavaScript Part 1: Prototypal OO](https://medium.com/javascript-scene/the-two-pillars-of-javascript-ee6f3281e7f3) 19 | * [The Two Pillars of JavaScript Part 2: Functional Programming](https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4) 20 | * [JavaScript Objects](http://davidwalsh.name/javascript-objects) An excellent explanation of inheritance in JavaScript by Kyle Simpson 21 | * [Isomorphic JavaScript](http://isomorphic.net/) 22 | * [JavaScript Application Architecture on the Road to 2015](https://medium.com/@addyosmani/javascript-application-architecture-on-the-road-to-2015-d8125811101b) — Addy Osmani 23 | * [Reactive MVC and the Virtual DOM](http://futurice.com/blog/reactive-mvc-and-the-virtual-dom) Great read, even if you’re not a React user. 24 | * [Introduction to Reactive Programming](https://gist.github.com/staltz/868e7e9bc2a7b8c1f754) 25 | * [The General Theory of Reactivity](https://github.com/kriskowal/gtor) What is all this talk about reactive? Functional? Promises? This is the beginning of a reactive programming bible. 26 | * [ES6 Generators](http://davidwalsh.name/es6-generators) A series of blog posts by Kyle Simpson 27 | * [Typed JavaScript](http://www.2ality.com/2014/10/typed-javascript.html) — Excellent post about the state of typed JavaScript by Axel Rauschmayer 28 | * [Taming the Asynchronous Beast with CSP in JavaScript](http://jlongster.com/Taming-the-Asynchronous-Beast-with-CSP-in-JavaScript) — James Long 29 | * [ES6 Modules: The Final Syntax](http://www.2ality.com/2014/09/es6-modules-final.html) by @rauschma #AMDisDead 30 | 31 | 32 | ## Required Viewing 33 | * [Classical Inheritance is Obsolete: How to Think in Prototypal OO](https://vimeo.com/69255635) — by [Eric Elliott](https://twitter.com/_ericelliott) 34 | * [Asynchronous Programming at Netflix](https://www.youtube.com/watch?v=gawmdhCNy-A) — [Jafar Husain](https://twitter.com/jhusain) 35 | * [David Nolen: Immutability: Putting The Dream Machine To Work](https://www.youtube.com/watch?v=SiFwRtCnxv4) — [David Nolen](https://twitter.com/swannodette) 36 | * [Immutable Data and React](https://www.youtube.com/watch?v=I7IdS-PbEgI&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr) by [Lee Byron](https://twitter.com/leeb) 37 | * [Delivering the Goods](https://www.youtube.com/watch?v=R8W_6xWphtw) Paul Irish on one of the most important but overlooked topics in the development world today — page load times. 38 | * [Simplicity Matters](https://www.youtube.com/watch?v=rI8tNMsozo0) A later version of the influential talk, “Simple Made Easy” by [Rich Hickey](https://twitter.com/richhickey) 39 | 40 | 41 | ## Spec 42 | 43 | * [ES5 Spec](http://es5.github.io/) An annotated, hyperlinked version of the ES5 spec 44 | * [ES6 draft](https://people.mozilla.org/~jorendorff/es6-draft.html) 45 | 46 | 47 | ## Books 48 | 49 | * [JavaScript for Kids](http://www.amazon.com/gp/product/B00QL616QE?ie=UTF8&camp=213733&creative=393177&creativeASIN=B00QL616QE&linkCode=shr&tag=ericleads-20&linkId=6AOODC27L6URY3K2) 50 | * [Eloquent JavaScript](http://eloquentjavascript.net/) 51 | * [JavaScript: The Good Parts](http://www.amazon.com/gp/product/0596517742?ie=UTF8&camp=213733&creative=393185&creativeASIN=0596517742&linkCode=shr&tag=ericleads-20&linkId=IJKESYSOTWGC27DR) 52 | * [Effective JavaScript](http://www.amazon.com/gp/product/0321812182?ie=UTF8&camp=213733&creative=393185&creativeASIN=0321812182&linkCode=shr&tag=ericleads-20&linkId=JIC63I267I6UDQQZ) 53 | * [Programming JavaScript Applications](http://pjabook.com) 54 | * [JavaScript: The Definitive Guide](http://www.amazon.com/gp/product/0596805527?ie=UTF8&camp=213733&creative=393185&creativeASIN=0596805527&linkCode=shr&tag=ericleads-20&linkId=AENIF5KLRQI3N335) 55 | * [You Don’t Know JS](https://github.com/getify/You-Dont-Know-JS) 56 | * [Understanding ECMAScript 6](https://leanpub.com/understandinges6/read/) by Nicholas C. Zakas 57 | * [Node.js in Action](http://www.manning.com/cantelon/) 58 | * [The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal](http://www.amazon.com/gp/product/0670899763?ie=UTF8&camp=213733&creative=393177&creativeASIN=0670899763&linkCode=shr&tag=ericleads-20&linkId=NDUXYQOCMPC47SQI) 59 | 60 | 61 | ## Dev tools & collaboration 62 | 63 | * [nvm](https://github.com/creationix/nvm) First install this... 64 | * [Node](http://nodejs.org/) Then install Node (with nvm). You’ll need this even if you’re a front-end dev. 65 | * [npm](https://www.npmjs.com/) Install lots of other things with npm. **The package manager for JavaScript.** Comes with Node. 66 | * [Sublime Text 3](http://www.sublimetext.com/3) 67 | * [Node Inspector](https://github.com/node-inspector/node-inspector) Debug Node code with the Chrome debug tools 68 | * [TraceGL](https://github.com/traceglMPL/tracegl) Powerful runtime analysis of live JavaScript code 69 | * [Tern](http://ternjs.net/) Static analysis in JavaScript 70 | * [JSDoc](http://usejsdoc.org/) — Pair with [Tern](http://ternjs.net/) for static analysis 71 | * [Nitrous.IO](https://www.nitrous.io/join/uJcRo6yQDvs?utm_source=nitrous.io&utm_medium=copypaste&utm_campaign=referral) (Supports live collaboration / pair programming) 72 | * [Slack](http://slack.com) Chat for teams, with GitHub and Google hangouts integration 73 | * For hangouts, just type /hangout in any channel 74 | * [PrettyDiff](http://prettydiff.com/) 75 | * [ES6 Fiddle](http://www.es6fiddle.net/) 76 | 77 | 78 | ## Building 79 | 80 | * [Browserify](http://browserify.org/) Bundle modules for the browser. 81 | * [How to use NPM as a Build Tool](http://blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/) 82 | 83 | 84 | ### Lint / Quality checkers 85 | 86 | * [JSHint](http://jshint.com/) 87 | * [ESLint](http://eslint.org/) 88 | * [Istanbul](https://github.com/gotwarlost/istanbul) Code coverage reporting 89 | * [tape](https://github.com/substack/tape) and [faucet](https://github.com/substack/faucet) for dead simple unit testing. 90 | * [Nightwatch](http://nightwatchjs.org/) Dead simple integration testing with Selenium 91 | 92 | 93 | ### Transpilers 94 | 95 | * [6to5](https://github.com/6to5/6to5) (ES6) 96 | * [CoffeeScript](http://coffeescript.org/) 97 | * [Emscripten](http://kripken.github.io/emscripten-site/) (frequently used for C/C++ JavaScript ports) 98 | * [Traceur](https://github.com/google/traceur-compiler) (ES.next) 99 | * [ES6 tools](https://github.com/addyosmani/es6-tools) Addy Osmani’s ES6 Tools list 100 | 101 | 102 | ## JavaScript environments 103 | 104 | * [Node.js](http://nodejs.org/) Server side JavaScript and more 105 | * [io.js](https://iojs.org/) — The Node fork 106 | 107 | 108 | ## Libraries 109 | 110 | * [es5-shim](https://github.com/es-shims/es5-shim) Stable, production ready. 111 | * [es6-shim](https://github.com/es-shims/es6-shim/) Somewhat stable, but a few things I thought were solid got shifted to ES7. 112 | * [es7-shim](https://www.npmjs.com/package/es7-shim) Experimantal. Use with caution. 113 | * [HTML5 Cross Browser Polyfills](https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills) A fairly comprehensive list of HTML5 API polyfills. 114 | * [HTML5 Boilerplate](https://github.com/h5bp/html5-boilerplate) For educational use only. You’ll want to cherry-pick the best of this for your production apps. 115 | * [native-promise-only](https://github.com/getify/native-promise-only) An ECMAScript standard promise polyfill by Kyle Simpson. 116 | * [isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch) A [WHATWG fetch](https://fetch.spec.whatwg.org/) standard polyfill. 117 | * [sseasy](https://github.com/heroku/sseasy) Server Sent Events for Node (HTML5 standard push notifications). 118 | * [EventSource browser Polyfill](https://github.com/Yaffle/EventSource/) Required client-side patching to support Server Sent Events. 119 | * [jQuery](http://jquery.com/) Yes, [I still use jQuery](https://docs.google.com/document/d/1LPaPA30bLUB_publLIMF0RlhdnPx_ePXm7oW02iiT6o/edit#) and so do 61% of the top 100,000 websites — for good reason. 120 | * [Blaze](http://meteor.github.io/blaze/) DOM-diffing isomorphic reactive templates from Meteor 121 | * [RxJS](https://github.com/Reactive-Extensions/RxJS) Reactive extensions for JavaScript. [What’s reactive?](https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4) 122 | * [Moment](http://momentjs.com/docs/) A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates. 123 | * [Globalize](https://github.com/jquery/globalize) i18n / translate your app for many languages and locations (locales) 124 | * [Express](http://expressjs.com/) The most popular framework for Node 125 | * [Stampit](https://github.com/ericelliott/stampit) Stampit — create objects from reusable, composable behaviors. Prototypal inheritance with stamps. 126 | * [Credential](https://github.com/ericelliott/credential) If you write Node apps with password logins, you need Credential 127 | * [cuid](https://github.com/ericelliott/cuid) GUIDs are broken — use cuid, instead 128 | * [velocity](http://julian.com/research/velocity/) & [Velocity Motion Designer (VMD)](http://julian.com/research/velocity/#vmd) UI animation library 129 | * [json-schema](https://github.com/kriszyp/json-schema) — Great for model validations 130 | 131 | 132 | ## Web Components 133 | 134 | * [FIRST](http://addyosmani.com/first/) 135 | * [Polyfills](http://webcomponents.org/polyfills/) 136 | * [HTML Imports](http://webcomponents.org/articles/introduction-to-html-imports/) 137 | * [Custom Elements](http://webcomponents.org/articles/introduction-to-custom-elements/) 138 | * [Templates](http://webcomponents.org/articles/introduction-to-template-element/) 139 | * [Shadow DOM](http://webcomponents.org/articles/introduction-to-shadow-dom/) 140 | * [x-gif](http://geelen.github.io/x-gif/#/http://i.imgur.com/iKXH4E2.gif) This web component wins the internet. 141 | 142 | 143 | ## QA / Deployment / Monitoring / CI 144 | 145 | * [PM2](https://github.com/Unitech/pm2) Process monitoring / self repair 146 | * [New Relic](http://newrelic.com/) Deep insights into the performance and health of your production apps 147 | * [Sauce Labs](https://saucelabs.com/) Cross platform web application testing with great collaboration and integration support 148 | * [Travis CI](https://travis-ci.org/) CI, of course 149 | * [Docker](https://www.docker.com/) Run your CI process using the same OS configs as your production systems. 150 | * [Shippable](https://www.shippable.com/) Docker-based hosted build / CI 151 | 152 | 153 | ## Community 154 | 155 | * [ES Discuss](https://esdiscuss.org/) The mailing list where all the ECMAScript standard discussion action is. 156 | * [JavaScript on Google+](https://plus.google.com/communities/100875929141897651837) 157 | * [HTML5 on Google+](https://plus.google.com/communities/103299867207875326585) 158 | * [Node.js on Google+](https://plus.google.com/communities/115365528781941125390) 159 | * IRC ##JavaScript irc://irc.freenode.net/javascript 160 | * IRC #node.js irc://irc.freenode.net/node.js 161 | * IRC #io.js irc://irc.freenode.net/io.js — the Node fork 162 | 163 | 164 | ## News 165 | * [JavaScript Weekly](http://javascriptweekly.com/) 166 | * [Node Weekly](http://nodeweekly.com/) 167 | * [HTML5 Weekly](http://html5weekly.com/) 168 | * [EchoJS](http://www.echojs.com/) 169 | * [DailyJS](http://dailyjs.com/) 170 | * [JavaScript Jabber](http://devchat.tv/js-jabber/) 171 | 172 | 173 | ## Pasting / sharing code 174 | 175 | * [Codepen](http://codepen.io/pen/) 176 | * [RequireBin](http://requirebin.com/) 177 | 178 | 179 | ## Contests 180 | 181 | * [DemoJS](http://demojs.org/) The JavaScript demoscene party 182 | * [JS1k](http://js1k.com/) JavaScript demos in 1k of memory 183 | * [JS13k Games](http://js13kgames.com/) JavaScript games in 13k of memory 184 | * [FightCode game](http://fightcodegame.com/) program virtual battle bots and climb the leaderboard 185 | * [Node Knockout](http://nodeknockout.com/) The legendary Node competition 186 | 187 | 188 | ## Hackable Hardware 189 | 190 | * [Nodebots](http://nodebots.io/) 191 | * [Cylon](http://cylonjs.com/) 192 | * [Nodecopter](http://www.nodecopter.com/) 193 | * [Tessel](https://tessel.io/) 194 | * [Espruino](http://www.espruino.com/) 195 | 196 | 197 | ## Hosting 198 | 199 | * [DigitalOcean](https://www.digitalocean.com/?refcode=fdcfedac5208) 200 | 201 | ## For kids (and people who just love to have fun) 202 | 203 | * [JavaScript for Kids](http://www.amazon.com/gp/product/B00QL616QE?ie=UTF8&camp=213733&creative=393177&creativeASIN=B00QL616QE&linkCode=shr&tag=ericleads-20&linkId=6AOODC27L6URY3K2) 204 | * [LearnToMod](http://www.learntomod.com/) Mod Minecraft with JavaScript 205 | 206 | 207 | ## Twitter (alphabetical order) 208 | 209 | * [Addy Osmani](https://twitter.com/addyosmani) — App architecture expert, Chrome dev tools champion 210 | * [Angus Croll](https://twitter.com/angustweets) — Author, “If Hemingway Wrote JavaScript” 211 | * [Axel Rauschmayer](https://twitter.com/rauschma) — ES Next evangelist, author 212 | * [Brendan Eich](https://twitter.com/BrendanEich) — Created JavaScript 213 | * [David Nolen](https://twitter.com/swannodette) — Great functional programming content 214 | * [David Herman](https://twitter.com/littlecalculist) — Author, “Effective JavaScript” 215 | * [EchoJS](https://twitter.com/echojs) — News and links 216 | * [Eric Elliott](https://twitter.com/_ericelliott) — That’s me. O’Reilly author. JavaScript architect. JS Instructor. 217 | * [Jafar Husain](https://twitter.com/jhusain) — Great talks on RxJS, ES next, etc... 218 | * [James Halliday](https://twitter.com/substack) aka Substack — author of ~one million~ Node modules you probably use. 219 | * [James Long](https://twitter.com/jlongster) — CSP, functional programming advocate, Mozilla developer 220 | * [JavaScript Cheerleader](https://twitter.com/JS_Cheerleader) — Mover & shaker, JavaScript evangelist, documentary film maker 221 | * [JavaScript Daily](https://twitter.com/JavaScriptDaily) — News and links 222 | * [Jordan Harband](https://twitter.com/ljharb) — Keeping us ahead of the JS curve 223 | * [Kyle Simpson](https://twitter.com/getify) — Author, YDKJS — O’Reilly, JS Instructor, open web evangelist 224 | * [Marijn Haverbeke](https://twitter.com/marijnjh) — Author, “Eloquent JavaScript” 225 | * [Nicholas C. Zakas](https://twitter.com/slicknet) — Author, speaker 226 | * [Nick Morgan](https://twitter.com/skilldrick) — Author, “JavaScript for Kids” 227 | * [Paul Irish](https://twitter.com/paul_irish) — Developer evangelist, Chrome dev tools champion 228 | * [Reginald Braithwaite](https://twitter.com/raganwald) — Author, “JavaScript Allongé,” speaker, GitHub 229 | * [YDKJS](https://twitter.com/ydkjs) — You Don’t Know JS, O’Reilly book series by Kyle Simpson 230 | 231 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "essential-javascript-links", 3 | "version": "0.0.1", 4 | "description": "Essential JavaScript Links website.", 5 | "scripts": { 6 | "cleanup": "cat README.md | node scripts/cleanup.js > build/README.md" 7 | }, 8 | "engines": { 9 | "node": "0.10.x" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/rsperberg/essential-javascript-links.git" 14 | }, 15 | "author": "Eric Elliott", 16 | "license": "MIT", 17 | "bugs": { 18 | "url": "https://github.com/ericelliott/essential-javascript-links/issues" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /scripts/cleanup.js: -------------------------------------------------------------------------------- 1 | // cleanup.js 2 | /* 3 | * MIT license http://opensource.org/licenses/MIT 4 | * 5 | * Copyright (c) 2015 Eric Elliott 6 | * Original author of this script: rsperberg@gmail.com 7 | */ 8 | 9 | var fs = require("fs"); 10 | 11 | // identify each type of change, particularly for the apostrophe, since global change (e.g., /.'./g or /(\w|\d)'(\w|\d)/g) is just too risky 12 | // By making only known changes, stray apostrophes and quotes can be located easily 13 | // not yet defined: single quotes within double quotes 14 | 15 | var replacements = [ 16 | { searchFor: /'d\b/g, replaceWith: "’d"}, // I'd 17 | { searchFor: /'ll\b/g, replaceWith: "’ll"}, // you'll 18 | { searchFor: /'m\b/g, replaceWith: "’m"}, // I'm 19 | { searchFor: /'re\b/g, replaceWith: "’re"}, // you're 20 | { searchFor: /'s\b/g, replaceWith: "’s"}, // it's 21 | { searchFor: /s'(\s)/g, replaceWith: "s’$1"}, // plural possessive 22 | { searchFor: /'t\b/g, replaceWith: "’t"}, // don't 23 | { searchFor: /'ve\b/g, replaceWith: "’ve"}, // I've 24 | { searchFor: /(\s)'(\d\ds)/g, replaceWith: "$1’$2"}, // ’90s 25 | { searchFor: /O'([A-Z])/g, replaceWith: "O’$1"}, // O'Reilly 26 | { searchFor: /",/g, replaceWith: ',”'}, // comma outside quote mark 27 | { searchFor: /"\./g, replaceWith: '.”'}, // period outside quote mark (transpose only) 28 | { searchFor: /"\b/g, replaceWith: '“'}, // open quote (eg, precedes a 'word boundary') 29 | { searchFor: /\b"/g, replaceWith: '”'}, // close quote (eg, is preceded by a 'word boundary') 30 | { searchFor: /\b([\.|,|\?|!|;|:|-|—])"/g, replaceWith: '$1”'}, // close quote after punctuation (which is itself preceded by a 'word boundary') 31 | { searchFor: / - /g, replaceWith: " — "} // em dash with spaces surrounding it 32 | ]; 33 | // using package.json script: cleanup to read README.md via cat 34 | var aFile = fs.readFile('/dev/stdin', 'utf8', function (err,data) { 35 | if (err) { 36 | return console.log(err); 37 | } 38 | 39 | // for each object in the replacements array, go through the document and make the replacement 40 | function cleanUp(someFile) { 41 | replacements.forEach(function(replacement) { 42 | someFile = someFile.replace(replacement.searchFor, replacement.replaceWith); 43 | }) 44 | return someFile; 45 | } 46 | var result = cleanUp(data); 47 | // now pipe the result to be stored in build/README.md 48 | console.log(result); 49 | 50 | }); 51 | --------------------------------------------------------------------------------