17

Is it not a Javascript engine hosted by the browser on the client machine itself?

Divs
  • 1,578
  • 2
  • 24
  • 51

5 Answers5

16

No, it isn't.

Server generally has two meanings:

  1. A piece of software that listens for network requests and then responds to them
  2. A computer running such a piece of software

A Node.JS server can be either of those.

In web programming, a Node.JS server takes the place of Perl, Python, Ruby, PHP, Scala, etc. (And like those other languages, Node.JS lets you use JavaScript for non-server and non-web purposes).

Generally the server itself is run directly from Node (e.g. with this library) rather than being embedded in another server like Apache (as is most common for PHP).

A browser doesn't need to be involved at all. If one is, then it will probably be one acting as a client and making a request to the server. That said, tools like PhantomJS can allow a browser to be driven from Node (and other programming languages).

Quentin
  • 914,110
  • 126
  • 1,211
  • 1,335
  • 1
    I recently used Node.js to extract data from some txt files and post them to a MSSQL server (school assignment), and that's ALL it does. So it indeed isn't an HTTP server by default :) – CherryNerd Dec 29 '15 at 13:03
  • 1
    @Quentin. Thanks a lot. Now let's say if I have a web application; that uses NodeJS; is hosted in Tomcat, webLogic etc, then where and how that server comes into play? – Divs Dec 29 '15 at 13:10
  • 5
    As I said, Node.JS *is* the server. You use it to run a server side JavaScript program **instead** of using Tomcat or WebLogic to run a server side Java program (or you play juggling games involving multiple servers and multiple server side languages (for different bits of a site) which might require some tricky passing of data between them) – Quentin Dec 29 '15 at 13:12
  • 1
    @Quentin. So if I use NodeJS can't I have a single .war file containing the UI along with Server-Side java code? If not then 2 deployables will be created? – Divs Dec 29 '15 at 13:16
  • 1
    Since JavaScript and Java are completely separate languages (with about as much in common as cars and carpets): no you can't use Node to run a Java program. – Quentin Dec 29 '15 at 13:17
  • @Quentin. :-) Indeed, that was not the question. I'm just wondering if it is possible to host multiple different deployments with the same domain name so that when UI (NodeJS Deployment) makes a AJAX call to the Server side backend (Tomcat Deployment), it doesn't run into CORS issue. – Divs Dec 29 '15 at 13:24
  • You can't have multiple servers listening on the same port. You can have one server proxy a request to another. – Quentin Dec 29 '15 at 13:25
5

From here:

Server-side JavaScript (SSJS) refers to JavaScript that runs on server-side and is therefore not downloaded to the browser. This term is used to differentiate it from regular JavaScript, which is predominantly used on the client-side (also referred to as client-side JavaScript or CSJS for short).

Rahul Tripathi
  • 168,305
  • 31
  • 280
  • 331
4

NodeJS runs on the V8 JavaScript Engine which does not have to be in a browser. It just executes JS. It does not depend on what you do with it. In the case of a NodeJS server, it listens to HTTP requests and is therefore a server.

Igor Skoric
  • 634
  • 4
  • 15
3

enter image description here

node.js is single threaded process and run event loops

kishan
  • 454
  • 3
  • 10
  • 4
    This seems to be a random fact about Node.JS and otherwise completely unrelated to the question that was asked. – Quentin Dec 29 '15 at 13:03
0

Node.js is a framework/program that is installed on a machine and contains code written in javascript and process those codes requested by a client like a browser, Yes each browser contains its own engine that process the javascript.

Ashutosh Singh
  • 609
  • 6
  • 21