Top Nodejs Libraries: Your Essential Toolkit

nodejs libraries
14 min read

Welcome to the awesome world of Nodejs libraries! As developers, we’re always looking for tools to make our lives easier, get more stuff done, and write better code. And you know what? Node.js libraries are like magic potions that do exactly that. In this blog, we’re going to explore all about Node.js libraries. We’ll check out simple helpers that make everyday tasks easy-peasy, and we’ll also look at cool frameworks that totally change how we build apps. So, whether you’re a pro or just starting out, come along and let’s discover the power of Nodejs libraries together!

1. Socket.io

Socket.io

Socket.io is an open-source library for real-time web applications in Node.js. It enables bidirectional communication between web clients and servers, allowing for real-time data transfer. Socket.io uses WebSockets as the underlying communication protocol but can degrade gracefully to other techniques like polling or long-polling for compatibility with older browsers.

Installation

To install Socket.io in your Node.js project, you can use npm:

npm install socket.io

Example of Usage of Socket.io

Here’s a simple example demonstrating how to use Socket.io for real-time communication between a server and a client:

Server-side code (app.js):

const express = require(‘express’);
const http = require(‘http’);
const socketIo = require(‘socket.io’);

const app = express();
const server = http.createServer(app);
const io = socketIo(server);

io.on(‘connection’, (socket) => {
  console.log(‘A user connected’);

  // Send a message to the client every 10 seconds
  setInterval(() => {
    const currentTime = new Date().toTimeString();
    socket.emit(‘time’, currentTime);
  }, 10000);

  socket.on(‘disconnect’, () => {
    console.log(‘A user disconnected’);
  });
});

server.listen(3000, () => {
  console.log(‘Server is running on port 3000’);
});

Client-side code (index.html):

<!DOCTYPE html>
<html lang=“en”>
<head>
  <meta charset=“UTF-8”>
  <meta name=“viewport” content=“width=device-width, initial-scale=1.0”>
  <title>Socket.io Example</title>
</head>
<body>
  <h1>Socket.io Example</h1>
  <div id=”time”></div>

  <script src=“/socket.io/socket.io.js”></script>
  <script>
    const socket = io();

    socket.on(‘time’, (currentTime) => {
      document.getElementById(‘time’).innerText = `Current Time: ${currentTime}`;
    });
  </script>
</body>
</html>

In this example, the server sends the current time to the client every 10 seconds, and the client displays it on the webpage.

2. Async.js

Async.js

Async.js is a utility library for asynchronous JavaScript programming in Node.js, providing functions for managing asynchronous control flow, handling parallelism, and avoiding callback hell. It simplifies the process of working with asynchronous code by offering a wide range of powerful functions. It’s also part of highly used nodejs libraries. 

Installation

You can install Async.js via npm using the following command:

npm install async

Example of Async.js

const async = require(‘async’);

// Simulated asynchronous tasks
const task1 = (callback) => {
  setTimeout(() => {
    console.log(‘Task 1 completed’);
    callback(null, ‘Result 1’);
  }, 2000);
};

const task2 = (callback) => {
  setTimeout(() => {
    console.log(‘Task 2 completed’);
    callback(null, ‘Result 2’);
  }, 1000);
};

// Parallel execution of tasks
async.parallel([task1, task2], (err, results) => {
  if (err) {
    console.error(‘Error:’, err);
    return;
  }
  console.log(‘All tasks completed’);
  console.log(‘Results:’, results);
});

In this example, task1 and task2 are simulated asynchronous tasks. Using async.parallel, both tasks are executed concurrently, and the results are collected in the callback function.

Read More: Angular vs Nodejs

3. Lodash

Lodash

Lodash is a JavaScript utility library that simplifies programming with arrays, numbers, objects, strings, and more in Node.js and browsers. It provides many useful functions for common programming tasks, such as manipulating arrays and objects, handling asynchronous operations, and working with collections.

Installation

You can install Lodash via npm using the following command:

npm install lodash

Example of Lodash

const _ = require(‘lodash’);

const numbers = [1, 2, 3, 4, 5];

// Using Lodash map to double each number in the array
const doubledNumbers = _.map(numbers, (num) => num * 2);

console.log(doubledNumbers); // Output: [2, 4, 6, 8, 10]

In this example, we first install Lodash using npm. Then, we import Lodash in our Node.js script and use the map function to double each number in the array. The resulting doubledNumbers array contains the transformed values.

Read More: Nodejs Architecture

4. Joi

Joi

Joi is a powerful schema description language and validator for JavaScript objects in Node.js and browsers. It allows you to create blueprints or schemas for JavaScript objects and then validate whether they match the specified schema. Joi provides a declarative way to define the structure and constraints of your data, making it easy to ensure data integrity and consistency.

Installation

You can install Joi via npm using the following command:

npm install @hapi/joi

Example of Joi

const Joi = require(‘@hapi/joi’);

// Define a schema
const schema = Joi.object({
  username: Joi.string().alphanum().min(3).max(30).required(),
  email: Joi.string().email().required(),
  age: Joi.number().integer().min(18).max(100),
  address: Joi.object({
    street: Joi.string().required(),
    city: Joi.string().required(),
    zip: Joi.string().pattern(/^\\\\d{5}$/),
  }),
});

// Data to validate
const data = {
  username: ‘john_doe’,
  email: ‘john@example.com’,
  age: 30,
  address: {
    street: ‘123 Main St’,
    city: ‘New York’,
    zip: ‘10001’,
  },
};

// Validate the data against the schema
const { error, value } = schema.validate(data);

if (error) {
  console.error(‘Validation Error:’, error.message);
} else {
  console.log(‘Validated Data:’, value);
}

In this example, we first install Joi using npm. Then, we import Joi in our Node.js script and define a schema using Joi’s schema definition API. We specify constraints such as data types, minimum and maximum lengths, and required fields. Finally, we validate the data object against the schema using Joi’s validate function and handle any validation errors.

5. Bcrypt.js

Bcrypt.js

Bcrypt.js is a node js library for hashing passwords in Node.js applications. It provides a secure way to hash passwords before storing them in a database. Bcrypt.js applies a salt to the password before hashing, which adds an extra layer of security by generating unique hashes even for identical passwords. This helps protect against common attacks like rainbow table attacks.

Installation

You can install Bcrypt.js via npm using the following command

npm install bcrypt

Example of Bcrypt.js

const bcrypt = require(‘bcrypt’);

const plaintextPassword = ‘password123’;

// Generate a salt
const saltRounds = 10;
bcrypt.genSalt(saltRounds, (err, salt) => {
  if (err) {
    console.error(‘Error generating salt:’, err);
    return;
  }

  // Hash the password with the generated salt
  bcrypt.hash(plaintextPassword, salt, (err, hash) => {
    if (err) {
      console.error(‘Error hashing password:’, err);
      return;
    }
    console.log(‘Hashed Password:’, hash);

    // Verify the hashed password
    bcrypt.compare(plaintextPassword, hash, (err, result) => {
      if (err) {
        console.error(‘Error comparing passwords:’, err);
        return;
      }
      console.log(‘Password Matched:’, result);
    });
  });
});

In this example, we first install Bcrypt.js using npm. Then, we import it into our Node.js script. We generate a salt with a specified number of rounds, and then use it to hash a plaintext password. Finally, we verify the hashed password by comparing it with the original plaintext password using the compare function provided by Bcrypt.js.

6. Winston

Winston

Winston is a versatile nodejs logging library for Node.js. It supports multiple transports, allowing logs to be outputted to various destinations such as the console, files, databases, and more. Winston offers customizable logging levels, formats, and transports, making it suitable for both small and large-scale applications. Winston is one of most used nodejs libraries used for logging. 

Installation

You can install Winston via npm using the following command

npm install winston

Example of Winston

const winston = require(‘winston’);

// Create a logger instance
const logger = winston.createLogger({
  level: ‘info’,
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json()
  ),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: ‘error.log’, level: ‘error’ }),
    new winston.transports.File({ filename: ‘combined.log’ })
  ]
});

// Log messages
logger.log({
  level: ‘info’,
  message: ‘This is an informational message.’
});

logger.error(‘This is an error message.’);

We first install Winston using npm. Then, we import it into our Node.js script and create a logger instance. We configure the logger with two transports: console and file. Messages with the ‘error’ level are logged to the ‘error.log’ file, while all other messages are logged to the ‘combined.log’ file. Finally, we log some messages using the logger instance.

7. Mongoose

Mongoose

Mongoose is a powerful Node library for MongoDB object modeling and data validation. It provides a straightforward way to define schemas for your MongoDB collections and perform CRUD operations. Mongoose also includes features like middleware, schema-based validation, query building, and support for population, making it a popular choice for working with MongoDB in Node.js applications.

Installation

You can install Mongoose via npm using the following command

npm install mongoose

Example of Mongoose

const mongoose = require(‘mongoose’);

// Connect to MongoDB
mongoose.connect(‘mongodb://localhost:27017/my_database’, { useNewUrlParser: true, useUnifiedTopology: true });

// Define a schema
const userSchema = new mongoose.Schema({
  name: String,
  email: String,
  age: Number
});

// Create a model
const User = mongoose.model(‘User’, userSchema);

// Create a new user
const newUser = new User({
  name: ‘John Doe’,
  email: ‘john@example.com’,
  age: 30
});

// Save the user to the database
newUser.save((err, savedUser) => {
  if (err) {
    console.error(err);
  } else {
    console.log(‘User saved successfully:’, savedUser);
  }
});

// Find all users
User.find({}, (err, users) => {
  if (err) {
    console.error(err);
  } else {
    console.log(‘All users:’, users);
  }
});

We first install Mongoose using npm. Then, we import it into our Node.js script and connect to a MongoDB database. We define a schema for a user, create a model based on that schema, and create a new user instance. Finally, we save the user to the database and retrieve all users using Mongoose methods.

Read More: Nodejs Event Loop: Phases and Best Practices to Consider

8. Moment.js

Nodejs Libraries: Moment.js

Moment.js is a popular library in JavaScript for parsing, validating, manipulating, and formatting dates and times. It provides a simple and intuitive API for handling various date-related operations, making it an essential tool for working with dates and times in Node.js applications. Moment.js is another highly used part of nodejs libraries. 

Installation

You can install Moment.js via npm using the following command

npm install moment

Example of Moment.js

const moment = require(‘moment’);

// Get the current date and time
const now = moment();

// Format the date
console.log(‘Formatted Date:’, now.format(‘YYYY-MM-DD’));

// Add days to the current date
const futureDate = now.add(7, ‘days’);

// Display the future date
console.log(‘Future Date:’, futureDate.format(‘YYYY-MM-DD’));

// Calculate the difference between two dates
const startDate = moment(‘2024-01-01’);
const endDate = moment(‘2024-12-31’);
const daysDifference = endDate.diff(startDate, ‘days’);

console.log(‘Days Difference:’, daysDifference);

In this example, we first install Moment.js using npm. Then, we import it into our Node.js script and use it to perform various date-related operations. We retrieve the current date and time, format it, add days to it, and calculate the difference between two dates using Moment.js methods. Finally, we print the results to the console.

9. ethers

Nodejs Libraries: ethers

Ethers is a JavaScript library for interacting with the Ethereum blockchain. It provides a simple and intuitive interface for developers to interact with Ethereum smart contracts, send transactions, and perform various blockchain-related tasks. Below is an overview and examples of how to use ethers.

Installation

You can install ethers via npm using the following command

npm install ethers

Examples of Sending Ether

const { ethers } = require(‘ethers’);

// Connect to Ethereum network
const provider = ethers.getDefaultProvider(‘ropsten’);

// Define sender and recipient addresses
const senderAddress = ‘0xYourSenderAddress’;
const recipientAddress = ‘0xYourRecipientAddress’;

// Create a wallet instance
const wallet = new ethers.Wallet(‘YourPrivateKey’, provider);

// Send ether to recipient
async function sendEther() {
    const tx = await wallet.sendTransaction({
        to: recipientAddress,
        value: ethers.utils.parseEther(‘0.1’) // Sending 0.1 Ether
    });
    await tx.wait();
    console.log(‘Transaction hash:’, tx.hash);
}

sendEther();

Interacting with a Smart Contract

const { ethers } = require(‘ethers’);

// ABI and contract address
const abi = [ /* ABI of your contract */ ];
const contractAddress = ‘0xYourContractAddress’;

// Connect to Ethereum network
const provider = ethers.getDefaultProvider(‘ropsten’);

// Create a wallet instance
const wallet = new ethers.Wallet(‘YourPrivateKey’, provider);

// Connect to the contract
const contract = new ethers.Contract(contractAddress, abi, wallet);

// Call a method on the contract
async function callContractMethod() {
    const result = await contract.someMethod();
    console.log(‘Result:’, result);
}

callContractMethod();

We first install ethers using npm. Then, we import the library and use it to interact with the Ethereum blockchain. The first example demonstrates sending ether to a recipient address, while the second example shows interacting with a smart contract by calling a method.

10. Helmet

Nodejs Libraries: Helmet

Helmet is a Node HTTP library which is middleware that helps secure Express/Connect apps by setting various HTTP headers. These headers can mitigate several common web vulnerabilities, such as Cross-Site-Scripting (XSS), Clickjacking, and more.

Installation

You can install Helmet using npm:

npm install helmet

Example of Basic Usage of Helmet

const express = require(‘express’);
const helmet = require(‘helmet’);

const app = express();

// Use Helmet middleware
app.use(helmet());

// Your Express routes here…

app.listen(3000, () => {
  console.log(‘Server is running on port 3000’);
});

Example of Content Security Policy (CSP)

const express = require(‘express’);
const helmet = require(‘helmet’);

const app = express();

// Use Helmet middleware with Content Security Policy (CSP)
app.use(
  helmet.contentSecurityPolicy({
    directives: {
      defaultSrc: [“‘self'”],
      scriptSrc: [“‘self'”, ‘trusted-scripts.com’],
      objectSrc: [“‘none'”],
      styleSrc: [“‘self'”, ‘maxcdn.bootstrapcdn.com’],
      imgSrc: [“‘self'”],
      fontSrc: [“‘self'”, ‘fonts.gstatic.com’],
      mediaSrc: [“‘none'”],
      frameSrc: [“‘none'”],
    },
  })
);

// Your Express routes here…

app.listen(3000, () => {
  console.log(‘Server is running on port 3000’);
});

In Example 1, Helmet is used as middleware in an Express application to automatically set various security-related HTTP headers.

In Example 2, Helmet’s contentSecurityPolicy middleware is utilized to implement a Content Security Policy (CSP), which helps prevent XSS attacks by specifying which sources of content are allowed to be loaded on a web page. This example demonstrates setting different directives for various content types.

Connect with Artoon Solutions

Artoon Solutions distinguishes itself as a leading Node js development agency, committed to delivering exceptional services that align with clients’ unique business requirements. Our team of seasoned developers possesses extensive expertise in Node.js development which enable us to craft bespoke solutions that meet and exceed client expectations. We provide exceptional nodejs development services to fulfill client’s needs.

Wrapping Up!

Nodejs libraries are crucial for developers, making tasks easier and applications stronger. It speed up development, enhance code quality, and encourage collaboration. Exploring the top 10 essential libraries shows their vital role in modern web development, driving innovation and progress. Ultimately, they empower developers to innovate, be creative, and succeed in software development. Get in touch with our team to discuss your business requirements and effortlessly hire Nodejs developers from us.

FAQs 

1. What are NodeJS libraries?

Node libraries are collections of pre-written code modules that extend the functionality of Node.js, enabling developers to perform various tasks efficiently.

2. What is the famous library Node JS?

One of the most famous libraries of Node.js is Express.js, a web application framework.

3. How many libraries are there in npm?

npm hosts over a million libraries for Node.js.

4. Does node js have a library?

Yes, Node.js has a vast ecosystem of nodejs libraries available through npm.

5. Is node js a library or framework?

Node.js is a runtime environment for executing JavaScript code, not a library or framework itself.

artoon-solutions-logo

Artoon Solutions

Artoon Solutions is a technology company that specializes in providing a wide range of IT services, including web and mobile app development, game development, and web application development. They offer custom software solutions to clients across various industries and are known for their expertise in technologies such as React.js, Angular, Node.js, and others. The company focuses on delivering high-quality, innovative solutions tailored to meet the specific needs of their clients.

arrow-img WhatsApp Icon