Getting started with Node.js and MEAN

When I initially heard about Node.js I was shocked, javascript on the server side are you insane? Since then I’ve heard many impressive stories about node, stories of increased server performance and developer productivity.

We’re in a period where more apps are realtime with higher server demand. Node.js is specifically designed for this type of application.

Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

Important companies who have embraced Node.js include YAHOO, Wall Street Journal and Frog Creek Software. Most notably for me was that Trello was built using Node.js, Trello is probably one of the snappiest web applications I’ve used.

Now what’s MEAN you might ask? Addy Osmani has a nice write up on MEAN.

A trend proliferating amongst prototypers in the Angular community is full-stack JavaScript development via the MEAN stack.

The acronym stands for: (M)ongoDB – a noSQL document datastore which uses JSON-style documents to represent data, (E)xpress – a HTTP server framework on top of Node, (A)ngular – as you know, the JS framework offering declarative, two-way databinding for webapps and (N)ode – the platform built on V8’s runtime for easily building fast, scalable network applications.

Installing node is easy, just visit and you can Download mongo here.

To get started this tutorial works well, it’s got some decent scaffolding that’s generated by yeoman. One thing I found missing from the scaffolding was backend testing, I had to add in mocha tests. If you do add in mocha tests you can have them automatically run from the grunt task using grunt-mocha-test.

Even if you don’t want to use node in a commercial product I would highly recommend having a play around with it, for many reasons most notably for me was that it’s fun.