occurred to me that it might be useful to create a small list of
resources, for those of you interested in going down the same rabbit hole and starting out along a similar path.
Grab some nice food and drinks, you’re gonna’ need ’em!
First off, I’m assuming you have a good basis in some common programming language,
such as C, C++, or Java, and preferably also one of the scripting languages, such as
Lua, Perl, Python, Ruby, or Tcl. This isn’t a list about learning to program,
libraries that come with it.
it is not the syntax or the semantics, but the fast-paced ecosystem that is evolving around
One more note before I take off: this is just my list. If you don’t agree, or
don’t like it, just ignore it. If there are any important pointers missing (of course there are!),
feel free to add tips and suggestions in the comments.
browser: the DOM, and on the server: Node). You’ll want to learn about them all.
2008, 1st ed, 176 pages, ISBN 0596517742
2011, 6th ed, 1100 pages, ISBN 0596805527
Videos: again by Douglas Crockford, there’s an excellent list at Stack Overflow.
Going through them will take many hours, but they are really excellent.
I watched all of these.
Don’t skim over prototypes, “==” vs “===”, and how “this” gets passed to functions.
here if you can’t. Or google for stuff. Just don’t cut corners – it’s bound to bite you.
In the browser
Next on the menu: the DOM,
CSS. This is the essence
of what happens inside a browser. Can be consumed in
small doses, as the need arises. Simply start with the just-mentioned Wikipedia links.
Not quite sure what to recommend here – I’ve picked this up over the years. Perhaps
w3schools this or this. Focus on HTML5 and CSS3, as these are the newest
On the server
the most common implementation seems to be Node.js. This
is a lot more than “just some JS implementation”. It comes with a standard
API, full of useful functions and objects.
Node.js is geared towards asynchronous & event-driven operation. Nothing blocks,
not even a read from a local disk – because in CPU terms, blocking takes too long.
This means that you tend to call a “read” function and give it a “callback”
function which gets called once the read completes. Very very different frame of
mind. Deeply frustrating at times, but essential for any non-trivial app which
needs to deal with networking, disks, and other “slow” peripherals. Including us mortals.
- Learning Node by Shelley Powers
2012, 1st ed, 396 pages, ISBN 1449323073
See also this great (but fairly long) list of tutorials, videos, and books at
SPA and MVC
of widespread approaches: PHP, ASP, and such. Even advanced web frameworks such as Rails and Django don’t play a role here. The server no longer acts as a templating system generating
The term for this is Single-page web application, even though it’s not about staying on a single page (i.e. URL) at all costs.
See this website for more background – also as PDF.
The other concepts bound to come up are MVC and MVVM.
In a nutshell: the model is the data in your app, the view is its presentation (i.e. while browsing), and the controller is the logic which makes changes to the model. Very (VERY!) loosely speaking, the model sits in the server, the view is the browser, and the controller is what jumps into action on the server when someone clicks, drags, or types something. This simplification completely falls apart in more advanced uses of JS.
I am already starting to become quite a fan of CoffeeScript,
Jade, and Stylus.
Here are some CoffeeScript tutorials and a cookbook with recipes.
It’s fairly easy to read these notations with only minimal exposure to the
underlying language dialects, in my (still limited) experience. No need to use them
yourself, but if you do, the above links are excellent starting points.
Just the start…
The above are really just pre-requisites to getting started. More
on this topic soon, but let me just stress that good foundational understanding of
Crockford frequently points out and explains), but they’re a fact of life that
we’ll just have to live with. This is what you get with a language which has now
become part of every major web browser in the world.