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!
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.
2008, 1st ed, 176 pages, ISBN 0596517742
2011, 6th ed, 1100 pages, ISBN 0596805527
Don’t skim over prototypes, “==” vs “===”, and how “this” gets passed to functions.
In the browser
Next on the menu: the DOM, HTML, and 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.
On the server
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 Stack Overflow.
SPA and MVC
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.
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…