Ccna final exam - java, php, javascript, ios, cshap all in one. This is a collaboratively edited question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.
Friday, May 25, 2012
How do I get started with Node.js
Are there any good resources to get started with Node.JS? Any good tutorials, blogs or books?
Of course, I have visited http://nodejs.org/ , but I didn't think the documentation they have is a good starting point.
Introduction to Node.js with Ryan Dahl Node.js: Asynchronous Purity Leads to Faster Development Parallel Programming with Node.js Server-side JavaScript with Node, Connect & Express
Books
The Node Beginner Book Mastering Node.js Up and Running with Node.js Node.js in Action
Blogs
Ryan Dahl's Node blog How To Node DailyJS Nodejitsu blog
Podcasts
NodeUp
JavaScript resources
Crockford's videos (must see!) Essential JavaScript Design Patterns For Beginners JavaScript garden JavaScript Patterns book JavaScript: The Good Parts book
Node Modules
Wiki List on Github/Joyent/Node (start here last!) Search for registered node.js modules
You'll want to understand the asynchronous coding style that Node encourages. Async != concurrent. Understand Node's event loop! Node uses CommonJS-style require() for code loading; it's probably a bit different from what you're used to. Familiarize yourself with Node's standard library.
Then, you're going to want to see what the community has to offer:
The gold standard for Node package management is NPM.
It is a command line tool for managing your project's dependencies. Make sure you understand how Node and NPM interact with your project via the node_modules folder and package.json. NPM is also a registry of pretty much every Node package out there
Finally, you're going to want to know what some of the more popular packages are for various tasks:
Useful Tools for Every Project:
Underscore contains just about every core utility method you want. CoffeeScript makes JavaScript considerably more bearable, while also keeping you out of trouble!
Caveat: A large portion of the community frowns upon it. If you are writing a library, you should consider regular JavaScript, to benefit from wider collaboration.
Unit Testing:
Vows is a fantastic take on asynchronous testing, albeit somewhat stale. Expresso is a more traditional unit testing framework. node-unit is another relatively traditional unit testing framework.
Web Frameworks:
Express is by far the most popular framework. Tower is an abstraction of top of Express that aims to be a Rails clone. Geddy is another take on web frameworks.
Web Framework Tools:
Jade is the HAML/Slim of the Node world EJS is a more traditional templating language. Don't forget about Underscore's template method!
Networking:
Connect is the Rack or WSGI of the Node world. Request is a very popular HTTP request library. socket.io is handy for building WebSocket servers.
Command Line Interaction:
Optimist makes argument parsing a joy. Commander is another popular argument parser. Colors makes your CLI output pretty.
No but seriously I found that building Node from source, running the tests, and looking at the benchmarks did get me on the right track. From there, the .js files in the lib directory are a good place to look, especially the file http.js.
Update: I wrote this answer over a year ago, and since that time there has explosion in the number of great resources available for people learning node. Though I still believe diving into the source is worthwhile, I think that there are now better ways to get started. I would suggest some of the books on node that are starting to come out.
The videos from the Node.js Camp put on in Dec of 2010 are pretty helpful in getting started.
http://camp.nodejs.org/videos/
If you are just starting out you are going to want to understand some of the 'Why' behind Node.
A few of the topics
Intro from Ryan Dahl (Creator) NPM - Node Package Manager Socket.io An example game covered from both the client and server perspective Redis CouchDB Initial Deployments
If you are absolutely brand new to Node.js I would recommend Ryan's Google Tech Talk first, which covers a lot of the theory behind Node. Learning 'Why' to Node can help really help you as you learn 'How' to Node.
This tutorial from howtonode.org on writing a blog using node.js is what got me started. As node.js is changing so rapidly half (that, or there abouts) of the code samples are out of date. Having to hack around between this and the docs to bring it up to date gave me a basic working knowledge fairly quickly.
You can use VJET JavaScript IDE for Eclipse and import the project NodeJSTL. This will provide a type library which will make code proposals work while learning and exploring all the apis available. Here are some screenshots available here - https://www.ebayopensource.org/index.php/VJET/NodeJS
You can get the Node JS Type library as a zip archive. Go to VJET page, Downloads, Then NodeJS type library.
Create a new VJET project and add a project dependency on NodeJSTL imported project. https://www.ebayopensource.org/docs/VJET/importing-vjet-javascript-type-libraries.html
This has been very helpful to me since VJET provides code assist for require and maps the core types automatically.
Heroku is a good hosting platform for NodeJS. Heroku exp support. It's experimental for now but do take a look at it. Write a slick app and deploy on it and play for sometime. This will allow you to learn the inside of configuring NodeJS as well. Node Knockout torunament website NodeKnockout is hosted on github which is in NodeJS. Hope this helps.
Check out http://www.nodeblogs.com you can find the code at github under. Personally I would recommend messing around with express and also check out the github node wiki that contains lots of links to tutorials and modules.
I'm going to throw my own resource in the hat: my Wilcox Development Solution's Node.js whitepaper. Essentially I created it because, while Node.js's module page is a great resource, it's also super long and you don't really know which module is the best.
I also wrote the whitepaper while looking at a potential large project in node.js. My background (and focus for the whitepaper) was "large" projects (10-15 and on up manyears) so I have a different focus than some node.js people.
Tutorials
ReplyDeleteNode.js guide
Node tuts
Videos
Introduction to Node.js with Ryan Dahl
Node.js: Asynchronous Purity Leads to Faster Development
Parallel Programming with Node.js
Server-side JavaScript with Node, Connect & Express
Books
The Node Beginner Book
Mastering Node.js
Up and Running with Node.js
Node.js in Action
Blogs
Ryan Dahl's Node blog
How To Node
DailyJS
Nodejitsu blog
Podcasts
NodeUp
JavaScript resources
Crockford's videos (must see!)
Essential JavaScript Design Patterns For Beginners
JavaScript garden
JavaScript Patterns book
JavaScript: The Good Parts book
Node Modules
Wiki List on Github/Joyent/Node (start here last!)
Search for registered node.js modules
First, learn the core concepts of Node.js:
ReplyDeleteYou'll want to understand the asynchronous coding style that Node encourages.
Async != concurrent. Understand Node's event loop!
Node uses CommonJS-style require() for code loading; it's probably a bit different from what you're used to.
Familiarize yourself with Node's standard library.
Then, you're going to want to see what the community has to offer:
The gold standard for Node package management is NPM.
It is a command line tool for managing your project's dependencies.
Make sure you understand how Node and NPM interact with your project via the node_modules folder and package.json.
NPM is also a registry of pretty much every Node package out there
Finally, you're going to want to know what some of the more popular packages are for various tasks:
Useful Tools for Every Project:
Underscore contains just about every core utility method you want.
CoffeeScript makes JavaScript considerably more bearable, while also keeping you out of trouble!
Caveat: A large portion of the community frowns upon it. If you are writing a library, you should consider regular JavaScript, to benefit from wider collaboration.
Unit Testing:
Vows is a fantastic take on asynchronous testing, albeit somewhat stale.
Expresso is a more traditional unit testing framework.
node-unit is another relatively traditional unit testing framework.
Web Frameworks:
Express is by far the most popular framework.
Tower is an abstraction of top of Express that aims to be a Rails clone.
Geddy is another take on web frameworks.
Web Framework Tools:
Jade is the HAML/Slim of the Node world
EJS is a more traditional templating language.
Don't forget about Underscore's template method!
Networking:
Connect is the Rack or WSGI of the Node world.
Request is a very popular HTTP request library.
socket.io is handy for building WebSocket servers.
Command Line Interaction:
Optimist makes argument parsing a joy.
Commander is another popular argument parser.
Colors makes your CLI output pretty.
Use the source, Luke.
ReplyDeleteNo but seriously I found that building Node from source, running the tests, and looking at the benchmarks did get me on the right track. From there, the .js files in the lib directory are a good place to look, especially the file http.js.
Update: I wrote this answer over a year ago, and since that time there has explosion in the number of great resources available for people learning node. Though I still believe diving into the source is worthwhile, I think that there are now better ways to get started. I would suggest some of the books on node that are starting to come out.
Howtonode is a good site to follow. Also, since node.js no longer supports promises as of 1.3 release, Do is also worth watching
ReplyDeleteYou can also take a look at http://nodecasts.org
ReplyDeleteJsApp.US is a hosting platform for node.js applications. It may be useful to get started.
ReplyDeleteThe videos from the Node.js Camp put on in Dec of 2010 are pretty helpful in getting started.
ReplyDeletehttp://camp.nodejs.org/videos/
If you are just starting out you are going to want to understand some of the 'Why' behind Node.
A few of the topics
Intro from Ryan Dahl (Creator)
NPM - Node Package Manager
Socket.io
An example game covered from both the client and server perspective
Redis
CouchDB
Initial Deployments
If you are absolutely brand new to Node.js I would recommend Ryan's Google Tech Talk first, which covers a lot of the theory behind Node. Learning 'Why' to Node can help really help you as you learn 'How' to Node.
There is a really good video introduction on the YDN with the creator:
ReplyDeletehttp://www.yuiblog.com/blog/2010/05/20/video-dahl/
There is a new site called "The Node Beginner Book". It's a great tutorial for beginners. Check it out: http://nodebeginner.org/
ReplyDeleteWrote a blog to help my friends get started with nodejs.
ReplyDeletehttp://neeraj.name/2010/03/25/getting-started-with-nodejs-in-steps.html
This tutorial from howtonode.org on writing a blog using node.js is what got me started. As node.js is changing so rapidly half (that, or there abouts) of the code samples are out of date. Having to hack around between this and the docs to bring it up to date gave me a basic working knowledge fairly quickly.
ReplyDeletehttp://howtonode.org/express-mongodb
You can use VJET JavaScript IDE for Eclipse and import the project NodeJSTL. This will provide a type library which will make code proposals work while learning and exploring all the apis available. Here are some screenshots available here - https://www.ebayopensource.org/index.php/VJET/NodeJS
ReplyDeleteYou can get the Node JS Type library as a zip archive. Go to VJET page, Downloads, Then NodeJS type library.
Create a new VJET project and add a project dependency on NodeJSTL imported project. https://www.ebayopensource.org/docs/VJET/importing-vjet-javascript-type-libraries.html
This has been very helpful to me since VJET provides code assist for require and maps the core types automatically.
Heroku is a good hosting platform for NodeJS. Heroku exp support. It's experimental for now but do take a look at it. Write a slick app and deploy on it and play for sometime. This will allow you to learn the inside of configuring NodeJS as well. Node Knockout torunament website NodeKnockout is hosted on github which is in NodeJS. Hope this helps.
ReplyDeleteThere are 3 resources for learning nodejs(for full understanding how to create application just read sources in github(check it modules page):
ReplyDeletehttps://github.com/joyent/node/wiki/modules
http://tjholowaychuk.com/
http://devthought.com/
my own website(but it haven't complete yet): http://github.com/oivoodoo/home
Recent article on smashing magazine provide us with tons of resources and tutorials on node.js
ReplyDeletehttp://coding.smashingmagazine.com/2011/09/16/useful-node-js-tools-tutorials-and-resources/
I spent some time learning Node recently and used many of the resources in this thread.
ReplyDeleteIt's hard to know what to read and in what order, so I put together a beginner's tutorial that takes a stab at organizing things a bit.
A small plug
ReplyDeleteCheck out http://www.nodeblogs.com you can find the code at github under.
Personally I would recommend messing around with express and also check out the github node wiki that contains lots of links to tutorials and modules.
http://wiki.github.com/ry/node/
Nevir's answer is pretty awesome.
ReplyDeleteI'm going to throw my own resource in the hat: my Wilcox Development Solution's Node.js whitepaper. Essentially I created it because, while Node.js's module page is a great resource, it's also super long and you don't really know which module is the best.
I also wrote the whitepaper while looking at a potential large project in node.js. My background (and focus for the whitepaper) was "large" projects (10-15 and on up manyears) so I have a different focus than some node.js people.