Is it a web server or a programming language for server-side scripts?
This question is related to
node.js
Node.js is exactly used for back-end development, but it is popular as a full-stack and front-end solution as well. It is used primarily to build web applications, but it is a very popular choice for building enterprise applications too.
Developers like it because of its versatility, agility and performance. It increases productivity and application performance in a significant way. Since Node.js has a long-term support (LTS) plan that provides security and stability, it's no wonder that huge enterprises constantly add it to their stacks.
It is non-blocking and event-driven. Node.js applications uses “Single Threaded Event Loop Model” architecture to handle multiple concurrent clients. These features are key factors to make real time web applications.
The Developers Survey from Stack Overflow is a good source of information for you to start this research.
2017: https://insights.stackoverflow.com/survey/2017#most-popular-technologies
2016: https://insights.stackoverflow.com/survey/2016#technology-most-popular-technologies
Why the Hell Would You Use Node.js
https://medium.com/the-node-js-collection/why-the-hell-would-you-use-node-js-4b053b94ab8e
Where Node.js really shines is in building fast, scalable network applications, as it’s capable of handling a huge number of simultaneous connections with high throughput, which equates to high scalability. How it works under-the-hood is pretty interesting. Compared to traditional web-serving techniques where each connection (request) spawns a new thread, taking up system RAM and eventually maxing-out at the amount of RAM available, Node.js operates on a single-thread, using non-blocking I/O calls, allowing it to support tens of thousands of concurrent connections (held in the event loop).
Directly from the node.js tag wiki, make sure watch some of the talk videos linked there to get a better idea.
Node.js is an event based, asynchronous I/O framework that uses Google's V8 JavaScript Engine.
Node.js - or just Node as it's commonly called - is used for developing applications that make heavy use of the ability to run JavaScript both on the client, as well as on server side and therefore benefit from the re-usability of code and the lack of context switching.
It's also possible to use matured JavaScript frameworks like YUI and jQuery for server side DOM manipulation.
To ease the development of complex JavaScript further, Node.js supports the CommonJS standard that allows for modularized development and the distribution of software in packages via the Node Package Manager.
Node.js is a runtime that compiles and executes javaScript. It can be used to develop application that runs end-to-end in JavaScript i..e both client side and server side uses javascript code unlike most of todays' application with rich client framework (angularJs, extJs) and RESTful server side APIs
Node.js is used for easily building fast, scalable network applications
What can we build with NodeJS:
Node.js is an open source command line tool built for the server side JavaScript code.
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.
The basic philosophy of node.js is:
Non-blocking I/O - every I/O call must take a callback, whether it is to retrieve information from disk, network or another process. Built-in support for the most important protocols (HTTP, DNS, TLS) Low-level. Do not remove functionality present at the POSIX layer. For example, support half-closed TCP connections. Stream everything; never force the buffering of data.
Source: Stackoverflow.com