Skip to content

surajarchive/teaching-basic-nodejs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Teaching Basic Node.js & Express

Diagram

A comprehensive guide to learning Node.js and Express.js fundamentals with hands-on examples.

Table of Contents


Getting Started

Step 1: Initialize Your Project

npm init -y

This creates a package.json file with default settings.

Step 2: Install Dependencies

npm install express express-session cookie-parser

Step 3: Configure ES Modules

Add this to your package.json:

"type": "module"

Chapter 1: File Operations

Learn CRUD operations (Create, Read, Update, Delete) with the Node.js fs module.

Example: file-ops.js

Create a File

import fs from 'fs';

fs.writeFile("parna.txt", "Hello parna", (err) => {
    if(err) throw err;
    console.log("File created");
});

Read a File

fs.readFile("parna.txt", 'utf-8', (err, data) => {
    if(!err) {
        console.log(data);
    } else {
        console.log(err);
    }
});

Update a File

fs.appendFile("parna.txt", "\n How are you?", (err) => {
    if(err) throw err;
    console.log("File updated");
});

Delete a File

fs.unlink("parna.txt", (err) => {
    if(err) throw err;
    console.log("File deleted");
});

πŸ“ Key Concepts

  • Asynchronous file operations
  • Error handling with callbacks
  • CRUD operations on files

Chapter 2: Express.js Basics

Build your first web server with Express.js!

Example: app.js

Basic Server Setup

import express from 'express';
const app = express();

app.get('/', (req, res) => {
    res.send("Welcome to my server");
});

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

Route Parameters

app.get('/:name', (req, res) => {
    const {name} = req.params;
    res.send(`Welcome to ${name} page`);
});

Query Parameters - File Creation

app.get("/sign", (req, res) => {
    const {file, content} = req.query;
    fs.writeFile(file, content, (err) => {
        if (err) throw err;
        console.log("file created");
    });
    res.send("File is created");
});

Query Parameters - File Rename

app.get("/rename", (req, res) => {
    const {oldFile, newFile} = req.query;
    fs.rename(oldFile, newFile, (err) => {
        if (err) throw err;
        console.log("file renamed");
    });
    res.send("File renamed successfully");
});

πŸ“ Key Concepts

  • Setting up Express server
  • Route handling (GET requests)
  • Route parameters (req.params)
  • Query parameters (req.query)
  • Integrating file operations with Express

Chapter 3: Sessions & Authentication

Learn how to handle user registration, login, and sessions.

Example: cookies.js

Setup Middleware

import session from 'express-session';
import express from 'express';

const app = express();
app.use(express.json());

app.use(session({
    secret: 'your-secret-key',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: false }
}));

User Registration

const db = [];
let id = 0;

app.post('/register', (req, res) => {
    try {
        const {name, email, password} = req.body;
        const user = {id: ++id, name, email, password};
        db.push(user);
        res.status(201).send({message: "User registered successfully"});
    } catch (error) {
        res.status(500).send({message: "Internal Server Error"});
    }
});

User Login with Cookie

app.post("/login", (req, res) => {
    try {
        const {email, password} = req.body;
        const user = db.find(x => x.email === email && x.password === password);
        
        if (!user) {
            res.status(401).send({message: "Invalid email or password"});
        }
        
        const token = user.id + "-" + new Date().getTime();
        res.cookie("token", token, {httpOnly: true});
        res.send({message: "Login successful"});
    } catch (error) {
        res.status(500).send({message: "Internal Server Error"});
    }
});

πŸ“ Key Concepts

  • Express middleware (express.json())
  • Sessions management
  • Cookies (httpOnly)
  • POST requests
  • Request body parsing
  • Basic authentication flow
  • Error handling with try-catch
  • HTTP status codes (201, 401, 500)

Chapter 4: Advanced Topics

Compression with Zlib

import zlib from "zlib";
import { promisify } from "util";

const gzip = promisify(zlib.gzip);
const gunzip = promisify(zlib.gunzip);

πŸ“ Key Concepts

  • Data compression
  • Promisify for async/await
  • Working with Node.js built-in modules

Running the Examples

Run File Operations

node file-ops.js

Run Express Server

node app.js

Then visit: http://localhost:3000

Run Authentication Server

node cookies.js

Test with tools like Postman or curl:

# Register
curl -X POST http://localhost:3000/register \
  -H "Content-Type: application/json" \
  -d '{"name":"John","email":"john@example.com","password":"password123"}'

# Login
curl -X POST http://localhost:3000/login \
  -H "Content-Type: application/json" \
  -d '{"email":"john@example.com","password":"password123"}'

Learning Outcomes

After completing this tutorial, students will understand:

  • βœ… Node.js file system operations (CRUD)
  • βœ… Setting up Express.js server
  • βœ… Routing and request handling
  • βœ… Middleware usage
  • βœ… Session management
  • βœ… Cookie-based authentication
  • βœ… HTTP methods (GET, POST)
  • βœ… Error handling
  • βœ… Working with request parameters and body

Project Structure

teaching-basic-nodejs/
β”œβ”€β”€ app.js              # Express basics & file operations
β”œβ”€β”€ cookies.js          # Authentication & sessions
β”œβ”€β”€ file-ops.js         # File CRUD operations
β”œβ”€β”€ zip.js              # Compression utilities
β”œβ”€β”€ package.json        # Project dependencies
β”œβ”€β”€ diagram.png         # Visual reference
└── README.md           # This file

Additional Resources


Happy Learning! πŸš€

About

teaching to student

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published