What is NodeJS? What can you do with it? Why should you use it?

Chris Pawlukiewicz
3 min readJul 17, 2016

--

Many of you have used NodeJS, and heard it around the office. Node is currently the buzz thing in software development, some people love it, some people hate it, but you have to have heard of Node (and probably used it, even if you don’t realize it).

Well awesome. I’m starting a NodeJS introduction course, and in this article, and the video companion I made below, I hope to explain this question.

Node is weird in that you can’t really put it in most development tech boxes.

  • Its not a programming language used almost exclusively for developing back-end web applications, like PHP or Ruby — though you can develop back-end web applications.
  • It’s not a framework or library, though there are NodeJS frameworks and libraries — ExpressJS, and many others
  • It’s not a package manager, though there are several node package managers — npm by default, as well as bower and several others.

So what is node? What can you do with it?

NodeJS is a javascript runtime built in Chrome’s V8 engine. Node allows you to execute Javascript code outside of the browser, in a computing environment (such as a server or local development environment) rather then a browser environment.

NodeJS is Javascript outside of the Browser.

There are 5 main things people use node for.

  1. Package management through npm, bower, jspm, etc.
  2. Development tooling (module management with webpack, task running and automation through grunt or gulp, linters like eslint or jslint, etc)
  3. Creation of back-end web applications.
  4. Command line tools like rimraf.
  5. Desktop applications.

There are plenty other special use cases, like building neural networks, or chat bots, or really anything you can thing of.

Awesome!

Are you excited?

Great!

So, should you learn node? Should you use it in your app?

As with every piece of technology ever, it depends. Are you starting from scratch, or thinking about rewriting an existing applications? Could any of your app’s front-end code also work in a back-end environment?

NodeJS is an amazing development environment right now, and its exciting being a part of. Isomorphic Javascript (or Universal Javascript), is one of the most interesting and exciting things taking place in the computer science field. Javascript is one of the most commonly known programming languages, and where much of the growth in the field is taking place. Being able to write your apps front-end and back-end in the same language is truly sublime.

But to be clear, there can be detractors to working in node, depending on who you ask.

The fact that node is single-threaded, though you can use web workers, can cause performance and scaling headaches for extremely large applications (especially if you don’t use streams).

A lot, specifically, has been written about the blistering pace of change in npm, how often you don’t know all of or understand the inner workings of the hundreds of node modules your app will have as dependencies, and how that can be a bad thing.

Many Node developers have expressed frustration of coming back to a project after a few weeks or months and found their code breaks or their app won’d deploy because of a dependency headache.

Of course, the headaches involved in dependency managment is a problem with any package manager, such as PHP’s compass or Ruby’s Rubygems.

Anytime your application has dependencies, you are reliant on your dependencies for your application to work. Sometimes they don’t, sometimes dependencies conflict, sometimes dependencies give gibberish error messages and you have no idea how to fix your broken application (rm -rf node_modules/ is a good place to start though).

However, in my opinion, I don’t see this as a problem with node. It’s also not a problem with Web Development, or even Software Development. It’s a human problem. People make mistakes; they are selfish, lazy, and often don’t think of others’ needs. Software developers are people.

So should you use Node? I’d at least give it a try, even if you only start taking the first steps to implementing it in your application and development workflows.

--

--

Chris Pawlukiewicz

Novelist, technology freak, software developer, entreprenuer. Founder of kingdomworks — https://kingdomworks.io