Node’s model is radically different from other web programming languages like Asp.net and Php. There is a lot of stuff like asynchronous-IO, HTTP protocol etc., you need to understand in-order to learn Node.js effectively. Nodes documentation wont really help you learn, it is aimed at experienced developers.

Best path or flow to learn Node.js

The path which i am thinking is below

1. JavaScript

Every developer knows at-least some JavaScript. If you want to dig into the JavaScript language before getting into , I recommend Head First JavaScript Programming by Eric freeman and Elisabeth . It is a very good introduction to the language, and will introduce you to many aspects of the JavaScript, such as functions, scopes, binding, classes, callbacks(callbacks are especially important for Node) as well.

3. Http Protocol

I highly recommend learning Http Protocol to those who truly want to master Node.js. It’s not required reading, but you’ll have an easier time learning with a solid foundation in Http protocol. Here’s an awesome resource

4. Asynchronous programming

Before diving into Node, it is important to understand asynchronous programming, a fundamental concept in Node.js. In traditional programming practice, I/O operations happen synchronously.The code works sequentially, executing each line after the next. Asynchronous does exactly opposite, asynchronous code executes without having any dependency and no order. This improves the system efficiency and throughput.

If you are a procedure-oriented programmer, then it would be little difficult for you to grasp asynchronous programming.

5. The Node Core

JavaScript and Node are two completely different things, so the only thing you will have already learned that you will use in Node is the syntax and grammar.In order to master Node, It is important to understand the concepts like global object, buffers, process.cwd and essential utilities such as URL, Crypto, Path, String Decoder etc.

6. Modules

One of the most important aspects of Node to understand is Module wiring. There are two methods of wiring modules; One of them is using hard coded dependencies. The other method is to use a DI pattern.

Third-party modules like Async.js and request makes your life super easy.

7. Events

If you don’t know how to write event-based Node modules, you don’t know Node yet! So make sure to read more about events and EventEmitters.

The best way to learn Node.js I recommend you to sit down with an experienced instructor who knows how you learn, and where you need to go next.

There are plenty of good books available: