Instantly share code, notes, and snippets.

Embed
What would you like to do?
Essential JavaScript Links
@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott
Owner

ericelliott commented Jan 4, 2015

😃

@hemanth

This comment has been minimized.

Show comment
Hide comment
@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott
Owner

ericelliott commented Jan 4, 2015

@css-nerd I still use jQuery

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Jan 4, 2015

No problem, me too, yet sometimes it just does not make any sense to import jQuery or other large libraries in order to achieve something trivial. After all, coding the trivial things gets you started to learn JavaScript (or any language for that matter).

Of course it’s your choice, whether you’d like to add this your the list, I thought it might be helpful, because it has helped me a quite a few times. Plus, it might show newcomers that taking the easy way out is not always equivalent to taking the best way out.

ghost commented Jan 4, 2015

No problem, me too, yet sometimes it just does not make any sense to import jQuery or other large libraries in order to achieve something trivial. After all, coding the trivial things gets you started to learn JavaScript (or any language for that matter).

Of course it’s your choice, whether you’d like to add this your the list, I thought it might be helpful, because it has helped me a quite a few times. Plus, it might show newcomers that taking the easy way out is not always equivalent to taking the best way out.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 4, 2015

True. It's linked indirectly now via Paul Irish's impressive list of browser bugs that jQuery patches. =)

Owner

ericelliott commented Jan 4, 2015

True. It's linked indirectly now via Paul Irish's impressive list of browser bugs that jQuery patches. =)

@AllThingsSmitty

This comment has been minimized.

Show comment
Hide comment
@AllThingsSmitty

AllThingsSmitty commented Jan 5, 2015

@acid24

This comment has been minimized.

Show comment
Hide comment
@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 6, 2015

Must-Watch JavaScript

There are too many. Pick 5 of your favorites.

Owner

ericelliott commented Jan 6, 2015

Must-Watch JavaScript

There are too many. Pick 5 of your favorites.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 6, 2015

@acid24 Thanks for your contribution! =)

I can't recommend JavaScript-Garden without a total rewrite of all their recommended conclusions regarding constructors, inheritance, and factories. See The Two Pillars of JavaScript Part 1.

I know my views are not popular with people who are more familiar with classical inheritance, but I don't care about being popular. I'd rather help fewer people be more productive than be popular with a wider audience.

Owner

ericelliott commented Jan 6, 2015

@acid24 Thanks for your contribution! =)

I can't recommend JavaScript-Garden without a total rewrite of all their recommended conclusions regarding constructors, inheritance, and factories. See The Two Pillars of JavaScript Part 1.

I know my views are not popular with people who are more familiar with classical inheritance, but I don't care about being popular. I'd rather help fewer people be more productive than be popular with a wider audience.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Jan 6, 2015

Did I hear books and Node.js on Twitter?

Node.js Books

PS: Why can’t I use Markdown-links correctly to save my live?

ghost commented Jan 6, 2015

Did I hear books and Node.js on Twitter?

Node.js Books

PS: Why can’t I use Markdown-links correctly to save my live?

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 6, 2015

You did. Thanks!

Owner

ericelliott commented Jan 6, 2015

You did. Thanks!

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 6, 2015

Are any of these links essential?

Owner

ericelliott commented Jan 6, 2015

Are any of these links essential?

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 6, 2015

Can any Node experts vouch for the essential nature of css-nerd's Node book suggestions? I don't think I've read either one...

Owner

ericelliott commented Jan 6, 2015

Can any Node experts vouch for the essential nature of css-nerd's Node book suggestions? I don't think I've read either one...

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 6, 2015

Also, still looking for top picks from Must Watch JavaScript...

Owner

ericelliott commented Jan 6, 2015

Also, still looking for top picks from Must Watch JavaScript...

@tinkertrain

This comment has been minimized.

Show comment
Hide comment
@tinkertrain

tinkertrain Jan 6, 2015

@ericelliot
Rethinking Best Practices: Pete Hunt, JSConf.Asia
Async JavaScript at Netflix: Jafar Husain, Netflix JavaScript Talks
Maintainable JavaScript: Nicholas Zakas, FluentConf

tinkertrain commented Jan 6, 2015

@ericelliot
Rethinking Best Practices: Pete Hunt, JSConf.Asia
Async JavaScript at Netflix: Jafar Husain, Netflix JavaScript Talks
Maintainable JavaScript: Nicholas Zakas, FluentConf

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Jan 6, 2015

@ericelliot In the unlikely case nobody can, I’ll start by giving a little description:
The first book is relatively “new” and offers well-written compendium on how to work with Node.js, the most important modules/frameworks, how to solve particular tasks (e.g. file uploads) that every developer will face with Node as with any other environment, rounded up with reasonable (i.e. real) best practices.

It offers the best and most recent overview, I could think of, the Author has lots of experience and offers alternative solutions for many problems too. The book is as recommendable for people new to Node as well as for people who’ve already finished a few projects with it.

The second book is rather aimed at experienced Node devs and, as I must admit, sometimes a little less clear than the aforementioned one, but it’s nonetheless very useful if streaming, module usage and other things Node is pretty useful for, is relatively new to the reader.

As with the links/books provided by me before these books I wouldn’t have suggested them, if they hadn’t been useful to me.

ghost commented Jan 6, 2015

@ericelliot In the unlikely case nobody can, I’ll start by giving a little description:
The first book is relatively “new” and offers well-written compendium on how to work with Node.js, the most important modules/frameworks, how to solve particular tasks (e.g. file uploads) that every developer will face with Node as with any other environment, rounded up with reasonable (i.e. real) best practices.

It offers the best and most recent overview, I could think of, the Author has lots of experience and offers alternative solutions for many problems too. The book is as recommendable for people new to Node as well as for people who’ve already finished a few projects with it.

The second book is rather aimed at experienced Node devs and, as I must admit, sometimes a little less clear than the aforementioned one, but it’s nonetheless very useful if streaming, module usage and other things Node is pretty useful for, is relatively new to the reader.

As with the links/books provided by me before these books I wouldn’t have suggested them, if they hadn’t been useful to me.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott
Owner

ericelliott commented Jan 6, 2015

@tinkertrain - Thanks! =)

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Jan 6, 2015

Must watches

It’s actually a limitation to pick 5, because there are quite a few good ones. But I am convinced that Paul Irish, Angelina Fabbro and Nicholas Zakas shouldn’t be missing from the list.

2014
  • Enemy of the State: Amy Palamountain
  • What the Heck Is the Event Loop Anyway?: Philip Roberts
2013
  • JavaScript Masterclass: Angelina Fabbro
2012
  • JavaScript Development Workflow of 2013: Paul Irish
  • Maintainable JavaScript: Nicholas Zakas

ghost commented Jan 6, 2015

Must watches

It’s actually a limitation to pick 5, because there are quite a few good ones. But I am convinced that Paul Irish, Angelina Fabbro and Nicholas Zakas shouldn’t be missing from the list.

2014
  • Enemy of the State: Amy Palamountain
  • What the Heck Is the Event Loop Anyway?: Philip Roberts
2013
  • JavaScript Masterclass: Angelina Fabbro
2012
  • JavaScript Development Workflow of 2013: Paul Irish
  • Maintainable JavaScript: Nicholas Zakas
@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 6, 2015

Thanks to you, as well, Daniel! The descriptions are helpful. 👍

Owner

ericelliott commented Jan 6, 2015

Thanks to you, as well, Daniel! The descriptions are helpful. 👍

@krishammons

This comment has been minimized.

Show comment
Hide comment
@krishammons

krishammons Jan 6, 2015

Dev tools & collaboration

Pasting / sharing code

krishammons commented Jan 6, 2015

Dev tools & collaboration

Pasting / sharing code

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Jan 6, 2015

This is already an amazingly useful and interesting list. Currently at the top of my bookmarks.

ghost commented Jan 6, 2015

This is already an amazingly useful and interesting list. Currently at the top of my bookmarks.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 6, 2015

What are the best static analysis tools? Are any of these worthy of consideration?

Owner

ericelliott commented Jan 6, 2015

What are the best static analysis tools? Are any of these worthy of consideration?

@walterhiggins

This comment has been minimized.

Show comment
Hide comment
@walterhiggins

walterhiggins Jan 6, 2015

Browserify for concatenation/optimization and all-round goodness (it even makes writing Angular code bearable).

walterhiggins commented Jan 6, 2015

Browserify for concatenation/optimization and all-round goodness (it even makes writing Angular code bearable).

@gollodev

This comment has been minimized.

Show comment
Hide comment
@gollodev

gollodev Jan 7, 2015

Data Structures and Algorithms with JavaScript

gollodev commented Jan 7, 2015

Data Structures and Algorithms with JavaScript

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 7, 2015

Style guide candidates:

Looking for an idiomatic style guide to recommend. I'd prefer to pick one that has an ESLint config for style guide enforcement. Using lint rules for style enforcement radically reduces wasted time on style issues in pull requests and bikeshedding. Set it and forget it. All PRs magically conform to the correct style.

Comments, suggestions?

Owner

ericelliott commented Jan 7, 2015

Style guide candidates:

Looking for an idiomatic style guide to recommend. I'd prefer to pick one that has an ESLint config for style guide enforcement. Using lint rules for style enforcement radically reduces wasted time on style issues in pull requests and bikeshedding. Set it and forget it. All PRs magically conform to the correct style.

Comments, suggestions?

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott
Owner

ericelliott commented Jan 7, 2015

Simple Made Easy Video - suggested by @getify

@lguzzon

This comment has been minimized.

Show comment
Hide comment
@lguzzon

lguzzon commented Jan 7, 2015

In Transpilers ...
http://esperantojs.org/

@athanasiosem

This comment has been minimized.

Show comment
Hide comment
@athanasiosem

athanasiosem Jan 7, 2015

I wholeheartedly recommend the "Crockford on JavaScript" videos. http://yuiblog.com/crockford/

athanasiosem commented Jan 7, 2015

I wholeheartedly recommend the "Crockford on JavaScript" videos. http://yuiblog.com/crockford/

@gbabula

This comment has been minimized.

Show comment
Hide comment
@gbabula

gbabula Jan 7, 2015

Books:

Style Guides:

gbabula commented Jan 7, 2015

Books:

Style Guides:

@rodrigoalviani

This comment has been minimized.

Show comment
Hide comment

rodrigoalviani commented Jan 7, 2015

@AllThingsSmitty

This comment has been minimized.

Show comment
Hide comment
@AllThingsSmitty

AllThingsSmitty Jan 7, 2015

Five personal faves from Must-Watch JavaScript:

AllThingsSmitty commented Jan 7, 2015

Five personal faves from Must-Watch JavaScript:

@jkup

This comment has been minimized.

Show comment
Hide comment
@jkup

jkup Jan 8, 2015

Does Google's Closure Compiler fit somewhere on this list?

https://developers.google.com/closure/compiler/

jkup commented Jan 8, 2015

Does Google's Closure Compiler fit somewhere on this list?

https://developers.google.com/closure/compiler/

@bvjebin

This comment has been minimized.

Show comment
Hide comment
@bvjebin

bvjebin Jan 8, 2015

This blog can make its way in the list I guess!
http://javascriptweblog.wordpress.com/

bvjebin commented Jan 8, 2015

This blog can make its way in the list I guess!
http://javascriptweblog.wordpress.com/

@chovy

This comment has been minimized.

Show comment
Hide comment
@chovy

chovy Jan 8, 2015

http://reddit.com/r/remotejs - Remote JavaScript jobs.

chovy commented Jan 8, 2015

http://reddit.com/r/remotejs - Remote JavaScript jobs.

@bouveng

This comment has been minimized.

Show comment
Hide comment
@bouveng

bouveng Jan 8, 2015

Hi! Douglas Crockford has a useful series of videos. In found those very useful.

https://youtube.com/playlist?list=PL5586336C26BDB324

bouveng commented Jan 8, 2015

Hi! Douglas Crockford has a useful series of videos. In found those very useful.

https://youtube.com/playlist?list=PL5586336C26BDB324

@chiefy

This comment has been minimized.

Show comment
Hide comment
@chiefy

chiefy commented Jan 8, 2015

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 8, 2015

@lguzzon Why does esperantojs deserve to make the cut? Is it better than the others?

Owner

ericelliott commented Jan 8, 2015

@lguzzon Why does esperantojs deserve to make the cut? Is it better than the others?

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 8, 2015

JavaScript Jabber is already in the news section.

Anything framework specific needs to be really extraordinarily outstanding or it doesn't make the cut.

Owner

ericelliott commented Jan 8, 2015

JavaScript Jabber is already in the news section.

Anything framework specific needs to be really extraordinarily outstanding or it doesn't make the cut.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 8, 2015

Crockford's JS videos are pretty good, but a little dated.

Owner

ericelliott commented Jan 8, 2015

Crockford's JS videos are pretty good, but a little dated.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 9, 2015

Is Intern a good testing solution? It looks like it might be good for app projects, but I'm a little wary because all the examples use AMD. Why, why, why?

npm + node style modules have won the internet. 5x as many bower modules, growing faster than the Bower registry, and Browserify is a much cleaner solution than Require.js. AMD is dead. It just doesn't know it, yet.

Owner

ericelliott commented Jan 9, 2015

Is Intern a good testing solution? It looks like it might be good for app projects, but I'm a little wary because all the examples use AMD. Why, why, why?

npm + node style modules have won the internet. 5x as many bower modules, growing faster than the Bower registry, and Browserify is a much cleaner solution than Require.js. AMD is dead. It just doesn't know it, yet.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 9, 2015

Testing contenders:

Votes?

Owner

ericelliott commented Jan 9, 2015

Testing contenders:

Votes?

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 9, 2015

Is Accounting.js any good? Are there better alternatives?

Owner

ericelliott commented Jan 9, 2015

Is Accounting.js any good? Are there better alternatives?

@tinkertrain

This comment has been minimized.

Show comment
Hide comment
@tinkertrain

tinkertrain Jan 9, 2015

Another contender for testing: Testem

tinkertrain commented Jan 9, 2015

Another contender for testing: Testem

@djsylvester

This comment has been minimized.

Show comment
Hide comment
@djsylvester

djsylvester Jan 9, 2015

Great list Eric. Thanks. Here are a few additions I think people may find helpful.

http://webtoolsweekly.com - Every issue comes with on example of using JavaScript/DOM at the top followed by links to tools for testing, debugging, productivity, deployment, etc.
http://www.ng-newsletter.com/ - Weekly newsletter on Angular.
http://designpepper.com/a-drip-of-javascript/ - Not weekly, or on any time frame for that matter, but always in depth. Book also available on LeanPub.

djsylvester commented Jan 9, 2015

Great list Eric. Thanks. Here are a few additions I think people may find helpful.

http://webtoolsweekly.com - Every issue comes with on example of using JavaScript/DOM at the top followed by links to tools for testing, debugging, productivity, deployment, etc.
http://www.ng-newsletter.com/ - Weekly newsletter on Angular.
http://designpepper.com/a-drip-of-javascript/ - Not weekly, or on any time frame for that matter, but always in depth. Book also available on LeanPub.

@addyosmani

This comment has been minimized.

Show comment
Hide comment
@addyosmani

addyosmani Jan 10, 2015

What is considered essential really depends on what context you're working on.

If you're into Node, the work @substack has put into the Stream and Browserify handbooks is pretty crucial. @maxogden's art of node write-up is also interesting. Although not crucial to Node itself, a good understanding of ES6 fundamentals (Promises, Modules and so forth) may also be useful (in io.js sooner) and Slicknet's Understanding ES6 is also worth a read. I've found myself reading through posts from StrongLoop, the npm team and a plenty of issues for the rest of my Node knowledge. @sindresorhus maintains a pretty thorough list of resources for those interested in Node over here: https://github.com/sindresorhus/awesome-nodejs#resources

It's a different story if you care about JS application architecture, JS performance reading and so forth.

addyosmani commented Jan 10, 2015

What is considered essential really depends on what context you're working on.

If you're into Node, the work @substack has put into the Stream and Browserify handbooks is pretty crucial. @maxogden's art of node write-up is also interesting. Although not crucial to Node itself, a good understanding of ES6 fundamentals (Promises, Modules and so forth) may also be useful (in io.js sooner) and Slicknet's Understanding ES6 is also worth a read. I've found myself reading through posts from StrongLoop, the npm team and a plenty of issues for the rest of my Node knowledge. @sindresorhus maintains a pretty thorough list of resources for those interested in Node over here: https://github.com/sindresorhus/awesome-nodejs#resources

It's a different story if you care about JS application architecture, JS performance reading and so forth.

@ralphtheninja

This comment has been minimized.

Show comment
Hide comment
@ralphtheninja

ralphtheninja commented Jan 10, 2015

@ericelliott Check out the javascript markdown from cyberwizardinstitute https://github.com/cyberwizardinstitute/workshops/blob/master/javascript.markdown

@ralphtheninja

This comment has been minimized.

Show comment
Hide comment
@shaneckel

This comment has been minimized.

Show comment
Hide comment
@shaneckel

shaneckel Jan 10, 2015

I enjoy this Crockford vid: https://www.youtube.com/watch?v=JxAXlJEmNMg more so for it's entertainment than it's importance.

shaneckel commented Jan 10, 2015

I enjoy this Crockford vid: https://www.youtube.com/watch?v=JxAXlJEmNMg more so for it's entertainment than it's importance.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 10, 2015

@addyosmani I really believe that isomorphic JS is poised to take off, so developers who bone up on both browser and node architecture are going to have an edge. I'm sharing both kinds of resources, particularly those that talk about generally applicable stuff rather than overtly framework-specific stuff. Thanks for your contributions!

@ralphtheninja - Love it! =) Thanks a lot.

@shaneckel - I really enjoyed all of those talks. I was thinking I'd focus on stuff that is a little more current, but there is a lot of great historical info and some high level perspective in the industry in those talks. I think I'll link once to a whole collection of them. Thanks for pushing me. =)

Owner

ericelliott commented Jan 10, 2015

@addyosmani I really believe that isomorphic JS is poised to take off, so developers who bone up on both browser and node architecture are going to have an edge. I'm sharing both kinds of resources, particularly those that talk about generally applicable stuff rather than overtly framework-specific stuff. Thanks for your contributions!

@ralphtheninja - Love it! =) Thanks a lot.

@shaneckel - I really enjoyed all of those talks. I was thinking I'd focus on stuff that is a little more current, but there is a lot of great historical info and some high level perspective in the industry in those talks. I think I'll link once to a whole collection of them. Thanks for pushing me. =)

@jesstelford

This comment has been minimized.

Show comment
Hide comment
@jesstelford

jesstelford Jan 10, 2015

Re: Testing. Mocha is excellent. Never had a problem, it's very flexible, and is easy to get started with (comes with a built in test runner).

jesstelford commented Jan 10, 2015

Re: Testing. Mocha is excellent. Never had a problem, it's very flexible, and is easy to get started with (comes with a built in test runner).

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Jan 10, 2015

@addyosmani Thank you for posting the Sindre Sorhus list on Node! That thing is amazing and just helped a lot with an annoying little problem I had.

ghost commented Jan 10, 2015

@addyosmani Thank you for posting the Sindre Sorhus list on Node! That thing is amazing and just helped a lot with an annoying little problem I had.

@derickbailey

This comment has been minimized.

Show comment
Hide comment
@derickbailey

derickbailey Jan 10, 2015

shameless self plug (after asking if it was ok to do this)

my SOLID JavaScript talk on YouTube (from Codemash 2014) has been getting nothing but great comments for the last year, ant 10K+ views: https://www.youtube.com/watch?v=TAVn7s-kO9o

i've also had 1200+ people go through my "Mastering JavaScript 'this'" email course, with a ton of great feedback: http://derickbailey.com/email-courses/masteringthis/

derickbailey commented Jan 10, 2015

shameless self plug (after asking if it was ok to do this)

my SOLID JavaScript talk on YouTube (from Codemash 2014) has been getting nothing but great comments for the last year, ant 10K+ views: https://www.youtube.com/watch?v=TAVn7s-kO9o

i've also had 1200+ people go through my "Mastering JavaScript 'this'" email course, with a ton of great feedback: http://derickbailey.com/email-courses/masteringthis/

@bricejlin

This comment has been minimized.

Show comment
Hide comment
@bricejlin

bricejlin Jan 11, 2015

We use Jenkins for CI/CD! http://jenkins-ci.org/

bricejlin commented Jan 11, 2015

We use Jenkins for CI/CD! http://jenkins-ci.org/

@dfkaye

This comment has been minimized.

Show comment
Hide comment
@dfkaye

dfkaye Jan 12, 2015

MOCHA ~ multiple test styles (tdd, bdd, "qunit") & reporters ~ can intercept (& modify) failing msgs easily (thx to try/catch)

  • using Testem to drive it

dfkaye commented Jan 12, 2015

MOCHA ~ multiple test styles (tdd, bdd, "qunit") & reporters ~ can intercept (& modify) failing msgs easily (thx to try/catch)

  • using Testem to drive it
@locnguyen

This comment has been minimized.

Show comment
Hide comment
@locnguyen

locnguyen Jan 13, 2015

No link for Jenkins?

locnguyen commented Jan 13, 2015

No link for Jenkins?

@Nevraeka

This comment has been minimized.

Show comment
Hide comment
@Nevraeka

Nevraeka commented Jan 13, 2015

under web components - http://bosonic.github.io/

@deebloo

This comment has been minimized.

Show comment
Hide comment
@deebloo

deebloo Jan 13, 2015

JSDOC automatically create documentation site based on comments
Core - http://usejsdoc.org/
Grunt - https://github.com/krampstudio/grunt-jsdoc
Gulp - https://www.npmjs.com/package/gulp-jsdoc

deebloo commented Jan 13, 2015

JSDOC automatically create documentation site based on comments
Core - http://usejsdoc.org/
Grunt - https://github.com/krampstudio/grunt-jsdoc
Gulp - https://www.npmjs.com/package/gulp-jsdoc

@gdbtek

This comment has been minimized.

Show comment
Hide comment
@gdbtek

gdbtek commented Jan 13, 2015

Web Framework: http://hapijs.com
Code Coverage: http://blanketjs.org

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 14, 2015

@DannyBlueDesign: Added JSDoc to dev tools

@gbdtek What do you love about hapijs? What would you change?

Owner

ericelliott commented Jan 14, 2015

@DannyBlueDesign: Added JSDoc to dev tools

@gbdtek What do you love about hapijs? What would you change?

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 14, 2015

@bgtek: Can you use blanketjs with tape?

Owner

ericelliott commented Jan 14, 2015

@bgtek: Can you use blanketjs with tape?

@patryknowak

This comment has been minimized.

Show comment
Hide comment
@patryknowak

patryknowak Jan 14, 2015

Pasting / sharing code

JSFiddle

patryknowak commented Jan 14, 2015

Pasting / sharing code

JSFiddle

@ralphtheninja

This comment has been minimized.

Show comment
Hide comment
@ralphtheninja

ralphtheninja commented Jan 14, 2015

Forgot to add morkdown

@tinkertrain

This comment has been minimized.

Show comment
Hide comment
@tinkertrain

tinkertrain Jan 14, 2015

@ericelliott Have you seen and if so what do you think of Ramda? #functionalJavaScript
JSBin is very nice for JavaScript too

tinkertrain commented Jan 14, 2015

@ericelliott Have you seen and if so what do you think of Ramda? #functionalJavaScript
JSBin is very nice for JavaScript too

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 16, 2015

@tinkertrain: Ramda is pretty cool. I think it's a great educational tool, and a worthy utility belt.

Owner

ericelliott commented Jan 16, 2015

@tinkertrain: Ramda is pretty cool. I think it's a great educational tool, and a worthy utility belt.

@WebReflection

This comment has been minimized.

Show comment
Hide comment
@WebReflection

WebReflection Jan 16, 2015

I wasn't expecting my libraries in this list but at least these widely tested and adopted polyfills ...

Custom Elements polyfill that does not pollute the global scope with partial shim and stuff and works down to IE9 and Mobile + older Android

DOM Level 4 to normalize mobile and desktop browsers to latest DOM4 standard

ie8 to bring standard DOM features to ie8 too.

WebReflection commented Jan 16, 2015

I wasn't expecting my libraries in this list but at least these widely tested and adopted polyfills ...

Custom Elements polyfill that does not pollute the global scope with partial shim and stuff and works down to IE9 and Mobile + older Android

DOM Level 4 to normalize mobile and desktop browsers to latest DOM4 standard

ie8 to bring standard DOM features to ie8 too.

@gokulj

This comment has been minimized.

Show comment
Hide comment
@gokulj

gokulj Jan 16, 2015

A virtual DOM based micro MVC framework - http://lhorie.github.io/mithril/index.html
The blog is a great read even if you don't use Mithril
http://lhorie.github.io/mithril-blog/index.html

gokulj commented Jan 16, 2015

A virtual DOM based micro MVC framework - http://lhorie.github.io/mithril/index.html
The blog is a great read even if you don't use Mithril
http://lhorie.github.io/mithril-blog/index.html

@chiefy

This comment has been minimized.

Show comment
Hide comment
@chiefy

chiefy Jan 16, 2015

Mocha 👍

chiefy commented Jan 16, 2015

Mocha 👍

@raphaelvalerio

This comment has been minimized.

Show comment
Hide comment
@raphaelvalerio

raphaelvalerio Jan 16, 2015

I have to second @addyosmani's recommendation for Nicholas Zakas's Understanding ES6. There are good programmers, and then there are good programmers who are also good writers, and Zakas is a good writer. Although still a work-in-progress what he has written so far represents the most clear, lucid explanation of ES6 features I've encountered yet, especially for Javascript programmers who may not be experienced in patterns from other languages (the chapter on Generators is a particularly good example).

Also, this may stray a bit too far off-topic from your list, but I think Multiplexing with SPDY and HTTP/2 by @guybedford is really valuable because of the impact HTTP/2 is going to have on front-end development, especially because our current build processes with bundling will become an anti-pattern. The video does a great job illustrating how HTTP/2 is going to be just as big a change for us as ES6.

raphaelvalerio commented Jan 16, 2015

I have to second @addyosmani's recommendation for Nicholas Zakas's Understanding ES6. There are good programmers, and then there are good programmers who are also good writers, and Zakas is a good writer. Although still a work-in-progress what he has written so far represents the most clear, lucid explanation of ES6 features I've encountered yet, especially for Javascript programmers who may not be experienced in patterns from other languages (the chapter on Generators is a particularly good example).

Also, this may stray a bit too far off-topic from your list, but I think Multiplexing with SPDY and HTTP/2 by @guybedford is really valuable because of the impact HTTP/2 is going to have on front-end development, especially because our current build processes with bundling will become an anti-pattern. The video does a great job illustrating how HTTP/2 is going to be just as big a change for us as ES6.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 16, 2015

Thanks for the recommendations! =)

Owner

ericelliott commented Jan 16, 2015

Thanks for the recommendations! =)

@mtomcal

This comment has been minimized.

Show comment
Hide comment
@mtomcal

mtomcal Jan 16, 2015

mtomcal commented Jan 16, 2015

@xfq

This comment has been minimized.

Show comment
Hide comment
@xfq

xfq commented Jan 17, 2015

@kaidez

This comment has been minimized.

Show comment
Hide comment
@kaidez

kaidez Jan 17, 2015

Can I suggest Stoyan Stefanov's "Object-Oriented JavaScript" as a book? It contains an excellent walk-through on closures and has two great chapters on prototypes.

kaidez commented Jan 17, 2015

Can I suggest Stoyan Stefanov's "Object-Oriented JavaScript" as a book? It contains an excellent walk-through on closures and has two great chapters on prototypes.

@apsavin

This comment has been minimized.

Show comment
Hide comment
@apsavin

apsavin Jan 17, 2015

What about jscs - js code style checker?
Why Sublime Text 3? WebStorm!

apsavin commented Jan 17, 2015

What about jscs - js code style checker?
Why Sublime Text 3? WebStorm!

@mikemccaughan

This comment has been minimized.

Show comment
Hide comment
@mikemccaughan

mikemccaughan Jan 17, 2015

Transpiler: TypeScript I know, it's made by Microsoft so it must be evil. But it's really not 😄

mikemccaughan commented Jan 17, 2015

Transpiler: TypeScript I know, it's made by Microsoft so it must be evil. But it's really not 😄

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jan 18, 2015

Thanks for the suggestions, guys! I hope people have as much fun exploring the comments as they do the actual list. =)

Owner

ericelliott commented Jan 18, 2015

Thanks for the suggestions, guys! I hope people have as much fun exploring the comments as they do the actual list. =)

@SteveALee

This comment has been minimized.

Show comment
Hide comment
@SteveALee

SteveALee Jan 18, 2015

Excellent resource, thank you. Are you tracking io.js? http://blog.risingstack.com/iojs-overview

SteveALee commented Jan 18, 2015

Excellent resource, thank you. Are you tracking io.js? http://blog.risingstack.com/iojs-overview

@jwebcat

This comment has been minimized.

Show comment
Hide comment
@jwebcat

jwebcat Jan 18, 2015

You should add @sindresorhus to the twitter list.

jwebcat commented Jan 18, 2015

You should add @sindresorhus to the twitter list.

@aliakseikrauchanka

This comment has been minimized.

Show comment
Hide comment
@aliakseikrauchanka

aliakseikrauchanka Jan 19, 2015

I definitely suggest to look into http://dmitrysoshnikov.com/. It is the one of the best js explanation ever as for nooby me.

aliakseikrauchanka commented Jan 19, 2015

I definitely suggest to look into http://dmitrysoshnikov.com/. It is the one of the best js explanation ever as for nooby me.

@jaredwilli

This comment has been minimized.

Show comment
Hide comment
@jaredwilli

jaredwilli commented Jan 19, 2015

@nucliweb

This comment has been minimized.

Show comment
Hide comment
@nucliweb

nucliweb Jan 19, 2015

jsPerf aims to provide an easy way to create and share test cases, comparing the performance of different JavaScript snippets by running benchmarks.
http://jsperf.com/

nucliweb commented Jan 19, 2015

jsPerf aims to provide an easy way to create and share test cases, comparing the performance of different JavaScript snippets by running benchmarks.
http://jsperf.com/

@vneverz

This comment has been minimized.

Show comment
Hide comment
@vneverz

vneverz Jan 22, 2015

Amazingly useful and interesting list. Thanks for the recommendations!

vneverz commented Jan 22, 2015

Amazingly useful and interesting list. Thanks for the recommendations!

@jkup

This comment has been minimized.

Show comment
Hide comment
@jkup

jkup Jan 22, 2015

Consider adding the NodeUp podcast? Potentially breaking podcasts out of the news section?

jkup commented Jan 22, 2015

Consider adding the NodeUp podcast? Potentially breaking podcasts out of the news section?

@a0viedo

This comment has been minimized.

Show comment
Hide comment
@a0viedo

a0viedo Jan 22, 2015

I also recommend the book @css-nerd mentioned, Node.js: The right way. Also consider adding these:

Community

Games (to learn)

a0viedo commented Jan 22, 2015

I also recommend the book @css-nerd mentioned, Node.js: The right way. Also consider adding these:

Community

Games (to learn)

@rsperberg

This comment has been minimized.

Show comment
Hide comment
@rsperberg

rsperberg Jan 23, 2015

Thanks for posting this info! It's really useful to me as I broaden (and deepen) my understanding of JavaScript.

Because I mostly don't know these resources, I forked your gist so I could insert descriptions into each listing (mostly as written at the link you provide). I don't know if there's anyway to feed these back to you, if you wanted. My fork of your list is at https://gist.github.com/rsperberg/ed44613269be4b1eff79

rsperberg commented Jan 23, 2015

Thanks for posting this info! It's really useful to me as I broaden (and deepen) my understanding of JavaScript.

Because I mostly don't know these resources, I forked your gist so I could insert descriptions into each listing (mostly as written at the link you provide). I don't know if there's anyway to feed these back to you, if you wanted. My fork of your list is at https://gist.github.com/rsperberg/ed44613269be4b1eff79

@infiniteluke

This comment has been minimized.

Show comment
Hide comment
@nilproject

This comment has been minimized.

Show comment
Hide comment
@nilproject

nilproject commented Jan 24, 2015

Engines

NiL.JS

@jkup

This comment has been minimized.

Show comment
Hide comment
@jkup

jkup Jan 26, 2015

Also, I'd second adding Atom.io like @krishammons recommended. It's open source unlike Sublime and written in JavaScript! ( Technically CoffeeScript ).

jkup commented Jan 26, 2015

Also, I'd second adding Atom.io like @krishammons recommended. It's open source unlike Sublime and written in JavaScript! ( Technically CoffeeScript ).

@lunelson

This comment has been minimized.

Show comment
Hide comment
@lunelson

lunelson Feb 3, 2015

@jhusain's interactive Functional Programming tutorial is really nice
https://jhusain.github.io/learnrx/

lunelson commented Feb 3, 2015

@jhusain's interactive Functional Programming tutorial is really nice
https://jhusain.github.io/learnrx/

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Feb 5, 2015

👍 LOTS of great suggestions. Thanks, everybody! =)

Owner

ericelliott commented Feb 5, 2015

👍 LOTS of great suggestions. Thanks, everybody! =)

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Feb 5, 2015

@rsperberg Your fork is awesome, and it inspired me to turn this into a proper website.

Owner

ericelliott commented Feb 5, 2015

@rsperberg Your fork is awesome, and it inspired me to turn this into a proper website.

@rsperberg

This comment has been minimized.

Show comment
Hide comment
@rsperberg

rsperberg Feb 6, 2015

Btw, I posted another version at super-script.us, in order to discuss the good you are doing with this list without mixing your curatorial authority with my opinion. And now that you're looking to turn this list into a website, I will help in whatever way I can. Great idea!

rsperberg commented Feb 6, 2015

Btw, I posted another version at super-script.us, in order to discuss the good you are doing with this list without mixing your curatorial authority with my opinion. And now that you're looking to turn this list into a website, I will help in whatever way I can. Great idea!

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Feb 6, 2015

Hey @rsperberg - I like it.

Quick jam session: I think it could use a more condensed listing format -- maybe small thumbnails next to short descriptions, mirroring the original a little more closely. We could add an icon to expand the listing, and clicking the title could send you to the linked resource.

Would you feel confident implementing that in HTML / CSS / JS? Or even (if you're feeling adventurous) a web component thumbnail list? =)

We'd need a little data structure for each link. Something like:

{
  name: String,  // link text
  link: Href, // url
  thumbnail: Href,  // link to thumbnail image
  image: Href  // link to full-size image
  categories: Array // list of categories the link should be displayed in
}

Eventually, adding a link could be as simple as pasting a URL into a form and selecting a category or two. We could have scripts generate the images for us, and suggest a description based on the page's content.

Owner

ericelliott commented Feb 6, 2015

Hey @rsperberg - I like it.

Quick jam session: I think it could use a more condensed listing format -- maybe small thumbnails next to short descriptions, mirroring the original a little more closely. We could add an icon to expand the listing, and clicking the title could send you to the linked resource.

Would you feel confident implementing that in HTML / CSS / JS? Or even (if you're feeling adventurous) a web component thumbnail list? =)

We'd need a little data structure for each link. Something like:

{
  name: String,  // link text
  link: Href, // url
  thumbnail: Href,  // link to thumbnail image
  image: Href  // link to full-size image
  categories: Array // list of categories the link should be displayed in
}

Eventually, adding a link could be as simple as pasting a URL into a form and selecting a category or two. We could have scripts generate the images for us, and suggest a description based on the page's content.

@mattjared

This comment has been minimized.

Show comment
Hide comment
@mattjared

mattjared Feb 9, 2015

A Smarter Way to Learn is a really great resource with a ton of practice activities and explanations that I have found super helpful.

mattjared commented Feb 9, 2015

A Smarter Way to Learn is a really great resource with a ton of practice activities and explanations that I have found super helpful.

@elmasse

This comment has been minimized.

Show comment
Hide comment
@elmasse

elmasse Feb 11, 2015

Any reason mocha is not under test section?
http://mochajs.org
I use it a lot with sinon + chai + proxyquire in nodejs
http://sinonjs.org
http://chaijs.com
https://www.npmjs.com/package/proxyquire

elmasse commented Feb 11, 2015

Any reason mocha is not under test section?
http://mochajs.org
I use it a lot with sinon + chai + proxyquire in nodejs
http://sinonjs.org
http://chaijs.com
https://www.npmjs.com/package/proxyquire

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Feb 11, 2015

@elmasse

On real production projects, I have used Jasmine, Mocha, NodeUnit, Tape, and a bunch of other solutions. I have investigated many other options. For the last few years, I have used and continue to use tape on all of my personal projects and projects that I lead. Here's why:

I won't list Mocha in the Essential JavaScript Links collection because Mocha does way too much and gives developers way too much freedom, and that leads to analysis paralysis and lost productivity. Maybe worse, there are getters with side effects in some of the available BDD style assertion libraries, and at one company I worked for (not naming names), that buried a bug in one of our tests, and we spent far too long debugging the test case rather than developing actual application code.

Test assertions should be dead simple:

equal, and deepEqual, pass, & fail are my primary go-to assertions. If equal and deepEqual were the only assertions available anywhere, the testing world would probably be better off for it. Why? equal and deepEqual provide quality information about expectations, and they lead to very concise test cases that are easy to read and write.

Users don't get lost in unnecessary grammar verbosity like they do in BDD style assertions.

  • Better readability.
  • Less code.
  • Less maintenance.

These features trump bells and whistles. No contest.

Another reason that I don't recommend Mocha is because it's not as easy to use in your continuous integration pipeline as tape. One of the best features of tape is that it's very easy to use with just about any test tooling, because it just outputs raw TAP - a very simple standard that has been around forever, for which there is a gigantic ecosystem.

I know that Mocha can output tap, but the fact that it doesn't just stream raw tap to the console by default makes more work for the developers and dev-ops. For unit tests, bells and whistles are a waste of time and productivity.

Want your testing to just get out of your way and let you concentrate on building things?

You can't beat tape.

Owner

ericelliott commented Feb 11, 2015

@elmasse

On real production projects, I have used Jasmine, Mocha, NodeUnit, Tape, and a bunch of other solutions. I have investigated many other options. For the last few years, I have used and continue to use tape on all of my personal projects and projects that I lead. Here's why:

I won't list Mocha in the Essential JavaScript Links collection because Mocha does way too much and gives developers way too much freedom, and that leads to analysis paralysis and lost productivity. Maybe worse, there are getters with side effects in some of the available BDD style assertion libraries, and at one company I worked for (not naming names), that buried a bug in one of our tests, and we spent far too long debugging the test case rather than developing actual application code.

Test assertions should be dead simple:

equal, and deepEqual, pass, & fail are my primary go-to assertions. If equal and deepEqual were the only assertions available anywhere, the testing world would probably be better off for it. Why? equal and deepEqual provide quality information about expectations, and they lead to very concise test cases that are easy to read and write.

Users don't get lost in unnecessary grammar verbosity like they do in BDD style assertions.

  • Better readability.
  • Less code.
  • Less maintenance.

These features trump bells and whistles. No contest.

Another reason that I don't recommend Mocha is because it's not as easy to use in your continuous integration pipeline as tape. One of the best features of tape is that it's very easy to use with just about any test tooling, because it just outputs raw TAP - a very simple standard that has been around forever, for which there is a gigantic ecosystem.

I know that Mocha can output tap, but the fact that it doesn't just stream raw tap to the console by default makes more work for the developers and dev-ops. For unit tests, bells and whistles are a waste of time and productivity.

Want your testing to just get out of your way and let you concentrate on building things?

You can't beat tape.

@elmasse

This comment has been minimized.

Show comment
Hide comment
@elmasse

elmasse Feb 11, 2015

@ericelliott,

Awesome response, as usual. Fair enough. I have to give tape a try myself yet.

Anyway, beside mocha, I believe sinon and proxyquire are awesome libs to help unit testing.

elmasse commented Feb 11, 2015

@ericelliott,

Awesome response, as usual. Fair enough. I have to give tape a try myself yet.

Anyway, beside mocha, I believe sinon and proxyquire are awesome libs to help unit testing.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott
Owner

ericelliott commented Feb 11, 2015

👍

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Feb 11, 2015

The need for proxyrequire may be a code smell. Should you be exporting a function and using dependency injection, instead?

Owner

ericelliott commented Feb 11, 2015

The need for proxyrequire may be a code smell. Should you be exporting a function and using dependency injection, instead?

@elmasse

This comment has been minimized.

Show comment
Hide comment
@elmasse

elmasse Feb 11, 2015

Not really.
For instance, if your module depends on fsto read a file and you want to do real unit tests, then you need to mock some how the disk access in your tests.

elmasse commented Feb 11, 2015

Not really.
For instance, if your module depends on fsto read a file and you want to do real unit tests, then you need to mock some how the disk access in your tests.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Feb 12, 2015

Yeah, that could be a valid use case, but sometimes it's used when dependency injection would be better. I said it "could be" a code smell, not that it always is.

I think it's worth questioning yourself every time you use it, though. "Would my program be better if I could inject this dependency, instead?"

Owner

ericelliott commented Feb 12, 2015

Yeah, that could be a valid use case, but sometimes it's used when dependency injection would be better. I said it "could be" a code smell, not that it always is.

I think it's worth questioning yourself every time you use it, though. "Would my program be better if I could inject this dependency, instead?"

@backspaces

This comment has been minimized.

Show comment
Hide comment

backspaces commented Feb 12, 2015

@SOSANA

This comment has been minimized.

Show comment
Hide comment
@SOSANA

SOSANA Feb 15, 2015

Awesome thread... Big topic on TDD & BDD...

SOSANA commented Feb 15, 2015

Awesome thread... Big topic on TDD & BDD...

@rsperberg

This comment has been minimized.

Show comment
Hide comment
@rsperberg

rsperberg Feb 15, 2015

@ericelliott — somehow I missed your note of 10 days ago.
Yes, I'd be interested in working this up, although there are certain parts that might throw me.
By the end, I'd like to be able to create that web component thumbnail list, although at present I'm ignorant of even where to start (well, the links you have here, obviously).
Btw, I saw today that 6to5 has been renamed to Babel.

rsperberg commented Feb 15, 2015

@ericelliott — somehow I missed your note of 10 days ago.
Yes, I'd be interested in working this up, although there are certain parts that might throw me.
By the end, I'd like to be able to create that web component thumbnail list, although at present I'm ignorant of even where to start (well, the links you have here, obviously).
Btw, I saw today that 6to5 has been renamed to Babel.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Feb 15, 2015

Yeah, I've updated the Babel link.

Owner

ericelliott commented Feb 15, 2015

Yeah, I've updated the Babel link.

@nackjicholson

This comment has been minimized.

Show comment
Hide comment
@nackjicholson

nackjicholson Feb 17, 2015

"Would my program be better if I could inject this dependency, instead?"

@ericelliot Have you seen need in your code to use a dependency injection container of some kind? I find myself having areas of my code base which are mainly responsible for object construction and other areas that use those services via injection, but I wonder if using an injection container could help me manage the object construction areas a little better.

I briefly looked into using https://github.com/angular/di.js/ in node, just wondering if you have opinions on how best to go about managing dependencies in node, or if in general you don't find need for a library to do that.

nackjicholson commented Feb 17, 2015

"Would my program be better if I could inject this dependency, instead?"

@ericelliot Have you seen need in your code to use a dependency injection container of some kind? I find myself having areas of my code base which are mainly responsible for object construction and other areas that use those services via injection, but I wonder if using an injection container could help me manage the object construction areas a little better.

I briefly looked into using https://github.com/angular/di.js/ in node, just wondering if you have opinions on how best to go about managing dependencies in node, or if in general you don't find need for a library to do that.

@Cmdv

This comment has been minimized.

Show comment
Hide comment
@Cmdv

Cmdv Feb 20, 2015

I used to use Sublime Text 3 all the time but I moved over to Webstorm for my javascript and it really put up my productivity as a lot of the required tools are all under one hood (terminal, server, git etc), you can still install plugins or create your own.

When working on a node.js project the predictive text is amazing, pull's in what you want from code on other js files even if they are closed. This works great with node_modules too if you keep forgetting the markup. The list goes on but I find it a strong contender that maybe a little under looked.

Cmdv commented Feb 20, 2015

I used to use Sublime Text 3 all the time but I moved over to Webstorm for my javascript and it really put up my productivity as a lot of the required tools are all under one hood (terminal, server, git etc), you can still install plugins or create your own.

When working on a node.js project the predictive text is amazing, pull's in what you want from code on other js files even if they are closed. This works great with node_modules too if you keep forgetting the markup. The list goes on but I find it a strong contender that maybe a little under looked.

@jsteenkamp

This comment has been minimized.

Show comment
Hide comment
@jsteenkamp

jsteenkamp commented Feb 21, 2015

Useful ES6 features summary: https://github.com/lukehoban/es6features

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Feb 27, 2015

@nackjicholson If you want to tightly couple your modules to your app, by all means, make them depend on a dependency injection container.

Wait. Wat? Yeah. The whole point of dependency injection is to loosen the coupling between modules, but a DI container bypasses the nice dependency system built-in to node (so any dependency static analysis has to be rolled out custom for your app), and your dependencies all end up knowing each other by dependency name.

Granted, it makes it a little more convenient to swap out dependencies (just replace the named dependency with something else), but if you're building wisely, you're exposing facade wrappers to your app, anyway, so that benefit is nullified.

"Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a framework. Just a function." - John Carmack

The great thing about functions is they can take arguments. The great thing about JavaScript is functions can even take other functions as arguments.

You want the most flexible dependency injection system? For anything that produces objects, export a factory function that takes an options hash.

Do the same for dependencies that need to be shared between modules. Pass in your logger and your app config objects.

If you're worried about DI, this should be your new favorite pattern:

module.exports = function myAwesomeThing(options) {
  var myAwesomeInstance = {};
  // use dependencies passed in on the options object
  return myAwesomeInstance;
};

Want to get really fancy? Throw Stampit into the mix for truly flexible factories.

Owner

ericelliott commented Feb 27, 2015

@nackjicholson If you want to tightly couple your modules to your app, by all means, make them depend on a dependency injection container.

Wait. Wat? Yeah. The whole point of dependency injection is to loosen the coupling between modules, but a DI container bypasses the nice dependency system built-in to node (so any dependency static analysis has to be rolled out custom for your app), and your dependencies all end up knowing each other by dependency name.

Granted, it makes it a little more convenient to swap out dependencies (just replace the named dependency with something else), but if you're building wisely, you're exposing facade wrappers to your app, anyway, so that benefit is nullified.

"Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a framework. Just a function." - John Carmack

The great thing about functions is they can take arguments. The great thing about JavaScript is functions can even take other functions as arguments.

You want the most flexible dependency injection system? For anything that produces objects, export a factory function that takes an options hash.

Do the same for dependencies that need to be shared between modules. Pass in your logger and your app config objects.

If you're worried about DI, this should be your new favorite pattern:

module.exports = function myAwesomeThing(options) {
  var myAwesomeInstance = {};
  // use dependencies passed in on the options object
  return myAwesomeInstance;
};

Want to get really fancy? Throw Stampit into the mix for truly flexible factories.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Feb 27, 2015

@Cmdv Many of those benefits are available through plugins in Sublime Text, but WebStorm does have some very nice static analysis built-in. Sublime Text + Tern + DocBlocker gets you most of the way there, but WebStorm is all pre-configured for you.

But for me, I keep going back to Sublime Text because it's faster. WebStorm is like a Cadillac that tops out around 50mph. Sublime Text is the nimble sports car. I find after I've invested time tuning it, I can run circles around WebStorm... it's just that up-front investment that sucks. =)

Your mileage may vary. It's certainly possible to bog down Sublime Text too if you go too crazy with the plugins. For example, I always build a nice dev console into my projects so I get realtime lint and unit test feedback while I'm developing, so I don't install any of the inline debugging tools in Sublime. I also have a tendency to do quite a bit of interactive debugging directly in Chrome with workspaces, so it would be dishonest to say that my whole workflow really depends on Sublime Text. I let it be a good text editor, and I let my other tools be awesome at what they do.

Owner

ericelliott commented Feb 27, 2015

@Cmdv Many of those benefits are available through plugins in Sublime Text, but WebStorm does have some very nice static analysis built-in. Sublime Text + Tern + DocBlocker gets you most of the way there, but WebStorm is all pre-configured for you.

But for me, I keep going back to Sublime Text because it's faster. WebStorm is like a Cadillac that tops out around 50mph. Sublime Text is the nimble sports car. I find after I've invested time tuning it, I can run circles around WebStorm... it's just that up-front investment that sucks. =)

Your mileage may vary. It's certainly possible to bog down Sublime Text too if you go too crazy with the plugins. For example, I always build a nice dev console into my projects so I get realtime lint and unit test feedback while I'm developing, so I don't install any of the inline debugging tools in Sublime. I also have a tendency to do quite a bit of interactive debugging directly in Chrome with workspaces, so it would be dishonest to say that my whole workflow really depends on Sublime Text. I let it be a good text editor, and I let my other tools be awesome at what they do.

@Nevraeka

This comment has been minimized.

Show comment
Hide comment
@Nevraeka

Nevraeka commented Mar 2, 2015

Hosting - Divshot

@igwemagnusnnamdi65

This comment has been minimized.

Show comment
Hide comment
@igwemagnusnnamdi65

igwemagnusnnamdi65 commented Mar 20, 2015

@ericelliott you remain blessed.

@mindjuice

This comment has been minimized.

Show comment
Hide comment
@mindjuice

mindjuice Mar 20, 2015

@ericelliott How about a list of the best/most useful Sublime Text plugins? You mentioned Tern and DocBlockr. Others?

mindjuice commented Mar 20, 2015

@ericelliott How about a list of the best/most useful Sublime Text plugins? You mentioned Tern and DocBlockr. Others?

@xfq

This comment has been minimized.

Show comment
Hide comment
@xfq

xfq Apr 5, 2015

I think the HTML5 community on Google+ has too much off-topic stuff.

xfq commented Apr 5, 2015

I think the HTML5 community on Google+ has too much off-topic stuff.

@nackjicholson

This comment has been minimized.

Show comment
Hide comment
@nackjicholson

nackjicholson Apr 8, 2015

@ericelliot As always thanks. I have been doing exactly what you suggest above. Factory/Builder pattern for injecting dependencies and options into modules. It does work really well.

As far as the areas of my code, usually near the entry point, that end up being spots where objects and options are constructed in order to be passed around -- I guess that's just sort of natural consequence.

nackjicholson commented Apr 8, 2015

@ericelliot As always thanks. I have been doing exactly what you suggest above. Factory/Builder pattern for injecting dependencies and options into modules. It does work really well.

As far as the areas of my code, usually near the entry point, that end up being spots where objects and options are constructed in order to be passed around -- I guess that's just sort of natural consequence.

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Apr 8, 2015

@nackjicholson - I rarely have a ton of objects with methods floating around. Instead, I have a lot of functions in place and state flows through them. See The Two Pillars of JavaScript Part 2 for why that's a good thing. =)

Owner

ericelliott commented Apr 8, 2015

@nackjicholson - I rarely have a ton of objects with methods floating around. Instead, I have a lot of functions in place and state flows through them. See The Two Pillars of JavaScript Part 2 for why that's a good thing. =)

@rwaldron

This comment has been minimized.

Show comment
Hide comment

rwaldron commented May 2, 2015

@hueitan

This comment has been minimized.

Show comment
Hide comment
@hueitan

hueitan May 4, 2015

Javascript SDK design guide extracted from work and personal experience
https://github.com/huei90/javascript-sdk-design
page: http://sdk-design.js.org/

hueitan commented May 4, 2015

Javascript SDK design guide extracted from work and personal experience
https://github.com/huei90/javascript-sdk-design
page: http://sdk-design.js.org/

@KhaledMohamedP

This comment has been minimized.

Show comment
Hide comment
@KhaledMohamedP

KhaledMohamedP May 6, 2015

It doesn't hurt to add CodeSchool.com and codecademy.com

KhaledMohamedP commented May 6, 2015

It doesn't hurt to add CodeSchool.com and codecademy.com

@hoichi

This comment has been minimized.

Show comment
Hide comment
@hoichi

hoichi May 10, 2015

Not specific to JS, but I've found Debuggex extremely handy for regex debugging.

hoichi commented May 10, 2015

Not specific to JS, but I've found Debuggex extremely handy for regex debugging.

@moklick

This comment has been minimized.

Show comment
Hide comment
@moklick

moklick May 19, 2015

Why should we suggests links here instead of creating pull requests?

moklick commented May 19, 2015

Why should we suggests links here instead of creating pull requests?

@ericelliott

This comment has been minimized.

Show comment
Hide comment
@ericelliott

ericelliott Jun 1, 2015

@moklick Originally, it didn't have a proper repository. I started it as a gist, and it grew and took on a life of its own. You should use pull requests, now.

Owner

ericelliott commented Jun 1, 2015

@moklick Originally, it didn't have a proper repository. I started it as a gist, and it grew and took on a life of its own. You should use pull requests, now.

@DrMabuse23

This comment has been minimized.

Show comment
Hide comment
@smolinari

This comment has been minimized.

Show comment
Hide comment
@smolinari

smolinari Apr 5, 2017

Hey Eric. What happened to your EJL repo?

Scott

smolinari commented Apr 5, 2017

Hey Eric. What happened to your EJL repo?

Scott

@victor-dev

This comment has been minimized.

Show comment
Hide comment
@victor-dev

victor-dev Apr 25, 2017

Why the Essential JavaScript Links List was 404 ?

victor-dev commented Apr 25, 2017

Why the Essential JavaScript Links List was 404 ?

@ryanmortier

This comment has been minimized.

Show comment
Hide comment
@ryanmortier

ryanmortier commented May 8, 2017

404ing :(

@emilioriosvz

This comment has been minimized.

Show comment
Hide comment
@emilioriosvz

emilioriosvz commented Jun 12, 2017

404 :(

@Mashpy

This comment has been minimized.

Show comment
Hide comment
@Mashpy

Mashpy Jul 19, 2017

Thanks for your listing. If anyone would like to read JavaScript books, here you will find best javascript books for beginners.

Mashpy commented Jul 19, 2017

Thanks for your listing. If anyone would like to read JavaScript books, here you will find best javascript books for beginners.

@alundiak

This comment has been minimized.

Show comment
Hide comment