Skip to content

Instantly share code, notes, and snippets.

@ericelliott
Last active March 28, 2024 23:01
Show Gist options
  • Save ericelliott/d576f72441fc1b27dace to your computer and use it in GitHub Desktop.
Save ericelliott/d576f72441fc1b27dace to your computer and use it in GitHub Desktop.
Essential JavaScript Links
@SOSANA
Copy link

SOSANA commented Feb 15, 2015

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

@rsperberg
Copy link

@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
Copy link
Author

Yeah, I've updated the Babel link.

@nackjicholson
Copy link

"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
Copy link

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
Copy link

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

@ericelliott
Copy link
Author

@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
Copy link
Author

@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
Copy link

Nevraeka commented Mar 2, 2015

Hosting - Divshot

@igwemagnusnnamdi65
Copy link

@ericelliott you remain blessed.

@mindjuice
Copy link

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

@xfq
Copy link

xfq commented Apr 5, 2015

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

@nackjicholson
Copy link

@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
Copy link
Author

@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
Copy link

rwaldron commented May 2, 2015

@hueitan
Copy link

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
Copy link

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

@hoichi
Copy link

hoichi commented May 10, 2015

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

@moklick
Copy link

moklick commented May 19, 2015

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

@ericelliott
Copy link
Author

@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.

@smolinari
Copy link

Hey Eric. What happened to your EJL repo?

Scott

@victor-dev
Copy link

victor-dev commented Apr 25, 2017

Why the Essential JavaScript Links List was 404 ?

@ryanmortier
Copy link

404ing :(

@emilioriosvz
Copy link

404 :(

@Mashpy
Copy link

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.

@dwiyatci
Copy link

dwiyatci commented Nov 3, 2017

@ericelliott Everybody around the world is crying to know where does the repo go.. 😭 😭 😭

Guys, perhaps we can use this in the meantime?
https://devhub.io/repos/ericelliott-essential-javascript-links

@joeydebreuk
Copy link

Isomorphic JavaScript url doesn't exist.

@ericelliott
Copy link
Author

I no longer mantain this list. There are lots of other very comprehensive JavaScript link lists out there. Please see those, instead (Google "awesome JavaScript" for a start).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment