Table of contents
OS Module
This module provides information about the operating system and computer specifications.
// Importing built-in os module
const os = require('os');
console.log(os.type()); // Tells base kernel of OS
console.log(os.version()); // Gives OS version
console.log(os.release()); // Tell OS release of base kernel
console.log(os.hostname()); // Tell main user name
console.log(os.platform()); // Tells if wondows, linux, apple, etc.
console.log(os.userInfo()); // Gives user ID, name and other info
console.log(os.totalmem()); // Tells total RAM
console.log(os.freemem()); // Tells available RAM
console.log(os.uptime()); // Tells CPU uptime
Path Module
This module is useful for getting information about file paths. Let's see an example of a 'sep' property that gives a path separator character for a specific platform.
// Importign path module
const path = require("path");
// Output: /
console.log(path.sep);
The 'join()' method is used to generate a path if we know the folder and filename:
// Joins the folders and file using the platform specific separator
let myPath = path.join("parent", "child", "file.txt");
// Output: parent/child/file.txt
console.log(myPath);
The'basename()' method gives the resulting file name if we already have the path:
// Gives the last final file name of a path
console.log(path.basename(myPath));
The 'resolve()' method can be used to generate an absolute path for a file:
// '__dirname' gives absolute path form home to current app and
// Remaining folders are resolved together to get absolute path
console.log(path.resolve(__dirname, "parent", "child", "file.txt"));
FS Module
The file system module provides methods for file handling. There are two methods of file handling using this module:
Synchronous Method
Asynchronous Method
Synchronous Method:
In this method, file handling is done serially and in a blocking way. No other line of code is executed until and unless the file operation(open/read/write) is complete.
Let's see an example of reading a file synchronously.
// Importing file system module
const fs = require("fs");
// readFileSync(filePath, encodingMethod)
let data = fs.readFileSync("./myFile.txt", "utf8");
console.log(data);
Now, file writing can be done as:
let message = "This is a text to be written."
// writeFileSync(filePath, Message, FlagObject)
fs.writeFileSync("./two.txt", message, {flag: "a"});
Here, the 'a' flag is optional and it indicates append mode. So, the content is appended from the end of the file every time we run this code.
Asynchronous Method:
This method is mostly preferred because file handling is done in a non-blocking way. Other lines of code can be executed while file operation is being performed in the background.
Let's see an example of reading a file asynchronously.
const fs = require("fs");
function handleRead(err, res)
{
if(err) console.log(err); // Check for error
else console.log(res); // Display response
}
// readFile(filePath, encodingMethod, callbackFunction)
fs.readFile("./one.txt", "utf8", handleRead);
In the asynchronous method, instead of assigning the file content to a variable, we need to provide a callback function to the 'readFile()' method which gives access to the file content. Similarly, we can perform the write operation as follows:
let message = "This is a text to be written."
function handleWrite(err, res)
{
if(err) console.log(err); // Check for error
else console.log(res); // We'll get no response on write
}
// writeFile(filePath, Message, FlagObject, Callback)
fs.writeFile("./two.txt", message, {flag: "a"}, handleWrite);
HTTP Module
This module allows us to create a server and listen to specified ports to serve the client. Let's see an example by creating a server and working with request and response.
// Importing http module
const http = require("http");
// Creatign a web server to process request and give response
const server = http.createServer((req, res) =>{
// Print request method: GET, POST, DELETE, etc.
console.log(req.method);
// Write some message on browser
if(req.url=="/") res.write("You are in home page");
else res.write("Oops. You are on the wrong page!");
res.end("\nEnd of Response!");
});
// Making the server to listen to port: 5000
server.listen(5000);
To see the output of this app, we need to open 'localhost:5000' in our browser. The 'createServer()' takes a callback function which allows us to process the user request and give a response according to the request. The 'res.end()' method indicates that we won't respond further.