(+) Best Online Courses #14

Node.js: The Big Picture on Pluralsight by Paul O’Fallon

There are lots of intro-level courses on Node.js around the Web – so many, in fact, that you’d probably get overwhelmed with deciding which one to do first, especially since so many seem to cover the same topics. This course, however, takes a slightly different route in covering the concepts behind and related to Node.js, rather than jumping into coding first.

This course serves as a very good beginner-oriented high- and low-level overview of Node.js. However, I wouldn’t call it a good first course on Node.js though, as it is slightly technical and requires some familiarity with package managers in general, along with some understanding of how computers work on a fundamental level (i.e. operating system concepts like threads, processes, and I/O). To get the most out of this course, it’s best to have that knowledge of OS concepts, along with some hands-on experience with Node.js and NPM (or Yarn), and some moderate familiarity with JavaScript ES6/ES2015. So this is probably better as a second or even third course on Node.js, and in that aspect, it delivers a lot of what you need to know to work with Node.js.

The most helpful part of this course is, as mentioned, that it’s both high- and low-level. Not only does it properly explain what Node.js is (a runtime for JavaScript outside the browser) but it also goes into use cases and the primary benefit over other tools – which is to say, its “event-driven, asynchronous non-blocking I/O model” (and if you need further clarification on what that means, freeCodeCamp has an excellent article on the subject). But the course doesn’t stop there and shows, through visual diagrams, details on PPC (Process Per Connection), TPC (Thread Per Connection), and the event loop to explain Node.js’ inner workings on a lower level.

The course additionally covers the distinction between coding synchronously vs asynchronously in Node.js, and the syntactic differences between using callbacks, promises, and async/await. It also covers two very key topics that I haven’t seen covered in any other courses yet, EventEmitters and streams, and shows code examples to explain how both of those work. It also helpfully shows and explains how to modularize code using “require” and “module.exports”, another key part of Node.js. Finally, the course finishes out by briefly covering the subject of testing, and mentions tools like Mocha, Chai, Sinon, and Istanbul.

Conclusion: easily an excellent and foundational course on Node.js that covers a lot of important topics. If you’ve already gained some exposure to Node.js, it’s an excellent next step that will add some deeper understanding. Essential, practical, and useful; highly recommended.

Rating: 5 out of 5