Node.js Tutorial

By Xah Lee. Date: . Last updated: .

This page is a tutorial of node.js.

You should already know the basics of JavaScript. If not, see

JavaScript Basics

Install

Go to http://nodejs.org/ site, and download the binary. There's a binary for Linux too, no need to compile.

Run node

nodejs terminal 2019-10-18 w66hw
nodejs terminal 2019-10-18

Once installed, go to terminal, type node to start the command line.

To run a js script, type:

node filename

globals

There are these global objects:

For full list, see: ⬢ Global Objects

// print fullpath of current script
console.log(__filename);

// print dir path of current script
console.log(__dirname);
global.bb = 4;
console.log(global.bb); // 4

Use console.dir(…) to inspect objects, including builtin Node objects. This is handy to see what property/methods a object has. ⬢ console.dir(obj)

console.dir(global); // huge output. try it.

console.dir(…) is actually a wrapper to util.inspect() method. The “inspect” takes some useful arguments.

// print all properties of the require('net') module, using inspect method from module util
console.log(
 require('util').inspect( require('net'), { showHidden: true, depth: null })
);

⬢ util.inspect(object, [options])

show node.js version from runtime

show node.js version from runtime

// show node.js version from runtime
console.log ( process.version );
// v12.10.0

command line args

Use process.argv to get arguments from command line.

// sum numbers from command line args
// save this file as x.js
// run it in terminal, type
// node x.js 3 4
// prints 7

const tt = process.argv;
tt.splice(0,2);

console.log(
tt.reduce(
    ((x,y) => (parseInt(x) + parseInt(y)))
)
);

⬢ process

count lines (sync version)

// open file, count number of newlines

// save this file as x.js
// run it in terminal, type
// node x.js filepath
// prints number of newline chars

const fs = require('fs');

const fpath = process.argv[2];

const buf = fs.readFileSync(fpath);
const ss = buf.toString("utf8");

console.log(
 ss.match(/\n/g).length
);

⬢ Buffer

count lines (async version)

// open file, count number of newlines. async.

// save this file as x.js
// run it in terminal, type
// node x.js filepath
// prints number of newline chars

const fs = require('fs');

const fpath = process.argv[2];

fs.readFile(fpath, ((err, data) => {
    if (err) {throw err;} else {
        count = data.toString("utf8").match(/\n/g).length;
        console.log(count);
    }}));

⬢ fs.readFile(filename, [options], callback)

⬢ Buffer

list files

// given a dir path and extension such as "txt", print file names with that extension

const ff = require('fs');
const pp = require('path');

const inputDir = "/home/joe/";
const fExt = "txt";

const printFileName = ((err, fileList) => {
               if (err) {throw err;} else {
                   fileList.filter(
                       ((x) => (pp.extname(x) === "." + fExt))
                   ) .forEach( ((x) => (console.log(x))) )
               }
           });

ff.readdir(inputDir, printFileName );

⬢ fs.readdir(path, callback)

modules

Each module corresponds to a file.

Each module and its file have the same name.

⬢ Modules

Net Module for writing TCP Server

net.createServer() return a server object.

net.connect(…) and net.createConnection(…) are aliases.

net.createConnection(…) return a socket object.

⬢ net

See also: Node.js Video Tutorial by Ryan Dahl, with Annotation

Node.js Module system

Node.js Module

DOM How-To


Web Scripting Overview


HTML Input


Web Scripting Examples


Web Scripting Misc


jQuery


node.js

Like it? Help me by telling your friends. Or, Put $5 at patreon.

Or, Buy JavaScript in Depth

If you have a question, put $5 at patreon and message me.

Web Dev Tutorials