Then in 2009, another guy named Ryan Dahl created Node.js, which we will discuss in the next section.
A common use of both ways of using the language is to use it client-side to build and update UIs (user interfaces) and have server-side code serve data required for the client to work.
For example, if you are building a social network mobile app with React Native, (a hybrid mobile app framework by Facebook) that allows people to chat, post, like, and comment together, then you will probably need an API to allow data retrieval, storage and other actions. Using Node.js for this is a really good idea because it's fast (thanks to its event-driven non-blocking runtime environment) and your clients will have a fast response and good experience. Node.js can not only support HTTP requests, but also WebSockets connection for bi-directional communications in real time between clients. Node.js has a bunch of primitives that can be combined together to build more complex systems. It comes with NPM, a package manager that allows developers to install packages from a very large collection to build almost anything!