I'm doing some research for the Node.js Education Working Group (WG), and I have high hopes that this will be a good place to get some feedback.
So, have you tried to learn Node.js?
If so, what were the tools you used to learn? Tutorials? Courses? Mentorship?
What did and didn't work while you were attempting to learn it? How were those tools successful and how did they fail?
Thanks!
Been there, done that. It wasn't hard to write small utilities with Node, but to put it as an complete framework and do all we need is a bit of an task. It took me 1 day to get started with Node, but 1 month to get an web app up and running.
Major hurdle was, as mentioned by many, the async nature. Even with all those libraries, it is still a nightmare. I am yet to figure it out, but hope I will do it one day, once I'm free!!!
I read through the docs at nodejs.org and after that wrote an app myself and helped somebody else write an app.
Docs are fairly decent.
Haven't used NodeJS since.
I started learning Node.js since 2011 by writing several small scripts. Because I've worked at both back-end and front-end sides several years early so Node.js was not very difficult for me at that time. But, without real project, everything was just for fun.
The first project I've done with Node.js is upgrade a chat application, replace the traditional AJAX-pull mechanism with a modern server-push mechanism. I got a copy of "The Node Beginner Book" by Manuel Kiessling, and done some researches about Socket.io, that's it. It taken around 1 week to get the project done. Today, we may do the same thing in a hour :)
I did not follow any Node.js class.
I learned Node.JS just for fun a few years ago. What I did to learn it was what I did for every language and framework: I just used it. All you need is a project. Something you want to create. And then you google whatever you need.
The first big hurdle: I was a PHP developer before, so I first had to realize that Node.JS works fundamentally different. When you make a homepage with Node.JS it's not really a website, but more like an application itself.
The first big moment was when I finished porting my big web application framework from PHP to Node.JS
My second big hurdle: Requiring all files at the top of a script might lead to circular dependencies (which is not bad) which end in script not being executed in some files. I solved it by writing a module loader (which is FOSS and on NPM by the way).
My second big moment was when I realized that I can use Electron and NW.JS to make desktop apps, Cordova to make mobile apps and that there are even people making whole operating systems just with node.JS (well... except for the HAL and webkit maybe). Node.JS is awesome!
My third big hurdle: Struckturing Node.JS applications with thousands lines of code and many different modules (not Node.JS modules). I overcame this problem by taking ideas from C++ and TypeScript and mixing in my own ideas, ultimately separating the interface from the code and having every single method (together with its helper functions) in its own file each.
I've taken a few Pluralsight courses on NodeJS and wrote a few scripts / a server which it wasn't too hard but the whole async nature of things and following / controlling the flow is the only problem I am still trying to figure out in detail.
I am talking about scenarios where you have to loop over an array of few items and run a method for each item but the function does an asynchronous call (redis) behind the scenes and after that is done, continue. Sometimes it feels chaotic a little bit.
Usually, these scenarios are not shown in tutorials, so I have to learn them by myself or ask for help.
I have not used Node for production yet. I used Node with Bower and Gulp. Now, using Meteor.
I formally learnt node from a Pluralsight course by Kyle Simpson.
Node looks fairly simple for someone who is good with ES 2015.
There should be some reference material available for using Node in serious applications - caching, scaling, transactions, queues, workflows, performance, microservices, docker.
Node.js server technology is great, provided you have to use it in right ways. Things to be considered are :
These are my personal experiences I dealt with and I was stuck. These are the links that helped me.
blog.argteam.com/coding/hardening-node-js-for-pro…
https://scotch.io/(This has really great introduction to node technologies).
Hope this helps you.