Usage. Prospects. Comparison

Brief theory: what is Node.js and where is this technology applied

Node.js is an out-of-browser JavaScript code runtime. This platform allows you to write server code for dynamic web pages and web applications, as well as for command-line programs. With Node.js, the JavaScript for Everything paradigm is implemented. It involves the use of a single programming language for developing web applications instead of using different languages ​​to work on the frontend and backend.

Node.js is not a separate programming language, but a server-side platform for using JavaScript. Speaking about the language, the same JavaScript is used both for the front-end and the back-end. The only difference is in the set of APIs that use front-end and back-end.

Browser JavaScript uses Web APIs that provide access to the DOM and user interface of pages and web applications. Server-side JavaScript uses APIs that provide access to the application file system, HTTP requests, and streams.


What can you do with Node.js

As noted above, Node.js is used for JavaScript backend development. If JavaScript totally dominates in the browser, and the competitors of this language are not visible on the front-end even on the horizon, then the situation is different in the backend development. Here, JS competes with PHP, Python, and other languages.

Choosing server-side JavaScript for the backend provides the project with several advantages:


  • increased development efficiency due to the use of one language for the front and backend and the possibility of reusing the code;
  • the ability to use NPM - the largest package manager;


Search for artists is easier than other stacks, as JavaScript is one of the most popular programming languages. Node.js is well suited for developing RTAs, real-time responsive web applications. For example, it may be an online editor such as Google Docs, which allows multiple users to work on the same document at the same time.

Node.js easily handles a large number of requests at the same time and ensures application performance. Therefore, server-side JavaScript is often used to create SPAs, single-page web applications that render on the client-side. Node.js on the backend use Netflix, Uber, eBay, Groupon, Yahoo, and other well-known organizations and projects.


Node.js vs PHP and Python

Node.js is inferior to PHP in popularity. Suffice it to recall that the most popular content management systems are written in PHP, including WordPress, Joomla !, Drupal. WordPress alone employs about a third of all sites on the Internet.

The PHP infrastructure is more variable than Node.js. For example, PHP developers can choose between several decent web frameworks.

Python is considered one of the best languages ​​for learning programming. But the main difference between Python and Node.js is the application. Python is more universal: it is used both in web development and in Data Science, Machine Learning and other fields. Node.js is more likely "ground" under web development. Thanks to Electron, this technology is also used to develop desktop applications.

Nevertheless, Node.js infrastructure is mature enough, and developers have high-quality and convenient tools. For example, the NPM package manager and the Electron framework for creating desktop applications were mentioned above. Also worth mentioning are the Express and Nest.js frameworks for developing web applications.


Why should you study Node.js and pay attention to the backend JS

No matter how many people would like, sites still require server-side rendering. These are not only SEO tasks but also mobile traffic. If we don’t want to complicate our lives and use the same code on the server and client, then our practically only choice is JavaScript. Of course, there are various exotics compiled in JS, but, with the exception of TypeScript, all this is still quite difficult to take seriously. So, we need JS on the server, and here the main player is Node.js. Yes, it’s worth recalling that there are other solutions that allow JS to run outside the browser, but compared to Node.js, their share is invisible.

That was the first. The second - at some point, there’s a need to work with data stored on the server. It seems to me that any web developer, at least at a basic level, should understand how this all works. And here Node.js is an excellent choice, it allows you to create a full-fledged web server with a minimum entry threshold.

The third. Despite all the mistrust, Node.js has grown to a state of almost an adult instrument and continues to evolve. Today, we finally have decent tools, static typing, and even one-two good frameworks (Nest and Express). We can safely recommend Node.js as a server solution for large, long-lived, loaded projects.


What are the prospects for language and technology

And in the case of Node.js, TypeScript is the main reason, because unlike the browser, we do not need to translate JS to JS - we completely control the runtime. However, the possibilities that TypeScript gives us are far more than just syntactic sugar.

And if you take modern tools, such as Nest, then they actively use these opportunities. A modern Node.js project is static typing, Dependency Injection, design patterns. Perhaps this is losing the simplicity and ease of JavaScript, but instead comes the reliability and simplification of development and support in large projects.

Unexpectedly, but JavaScript has become a language for everything. Server, browser, mobile phones, desktop applications, IoT - everywhere JavaScript feels good. AWS lambdas (serverless) turned out to be a completely new direction, in which JavaScript also proved to be excellent. So yes, developers will be in demand. But if we talk about the server, then it seems to me that the market now urgently needs competent strong developers with a background from other languages.


Advice to beginners: where to start, what to study, what to look for

It’s worth starting with a study of UNIX and the fundamentals of computer networking. After that, you can try to write a simple application on Node.js, preferably without frameworks (including without Express). Having understood what TCP / UDP and HTTP / HTTPS are, you can already try to write a full-fledged backend for Express, which provides data via AJAX and template HTML. Also, of course, you have to deal with Nginx or HAProxy, to understand what balancing is. It is very good to understand at least at a minimum level what Docker is and why it is needed.

Diving into TypeScript and trying Nest is the next recommended step. A good option is to study the Angular + Nest bundle since Nest is created under the strong influence of Angular and implements similar concepts.

We highly recommend Mario Casciaro's Node.js Design Patterns.