NodeJs 2nd Class

 Sure, let's go through each concept with examples:


Nodemon Module Concept


Nodemon is a tool that helps develop Node.js based applications by automatically restarting the application when file changes are detected in the directory.


Installation:

npm install -g nodemon


Usage:

Instead of running your app with `node app.js`, you can run it with:

nodemon app.js

Nodemon will automatically restart your server whenever you make changes to your files.


URL Module

The URL module splits up a web address into readable parts.

Example:

const url = require('url');

const address = 'http://example.com:8080/default.htm?year=2023&month=july';

const parsedUrl = url.parse(address, true);

console.log(parsedUrl.host); // 'example.com:8080'

console.log(parsedUrl.pathname); // '/default.htm'

console.log(parsedUrl.search); // '?year=2023&month=july'


const queryData = parsedUrl.query;

console.log(queryData.year); // '2023'

console.log(queryData.month); // 'july'


Custom Module in Node.js

You can create your own modules in Node.js.

 Example:

Create a file named `myModule.js`:

// myModule.js

exports.myFunction = function() {

  console.log("Hello from my module!");

};


In your main file (`app.js`):

const myModule = require('./myModule');

myModule.myFunction(); // Outputs: Hello from my module!


Export Custom Module

You can export multiple items from a module.

 Example:

// myModule.js

const myFunction = () => {

  console.log("Hello from my module!");

};

const myVariable = "Exported Variable";

module.exports = {

  myFunction,

  myVariable

};


In your main file (`app.js`):

const myModule = require('./myModule');

myModule.myFunction(); // Outputs: Hello from my module!

console.log(myModule.myVariable); // Outputs: Exported Variable


Custom Events in Node.js

Using the `events` module, you can create and handle custom events.

Example:

const EventEmitter = require('events');

const eventEmitter = new EventEmitter();

// Create an event listener

eventEmitter.on('greet', () => {

  console.log('Hello world!');

});

// Trigger the event

eventEmitter.emit('greet');


Nested Custom Events

You can emit events within event handlers.

Example:

const EventEmitter = require('events');

const eventEmitter = new EventEmitter();

eventEmitter.on('firstEvent', () => {

  console.log('First Event');

  eventEmitter.emit('secondEvent');

});

eventEmitter.on('secondEvent', () => {

  console.log('Second Event');

});

eventEmitter.emit('firstEvent');


Custom Event Module

You can create a module to handle custom events.

Example:

Create a file named `eventModule.js`:

const EventEmitter = require('events');

const eventEmitter = new EventEmitter();

eventEmitter.on('sayHello', () => {

  console.log('Hello from custom event module!');

});

module.exports = eventEmitter;


In your main file (`app.js`):

const eventModule = require('./eventModule');

eventModule.emit('sayHello'); // Outputs: Hello from custom event module!


FS Module

The FS (File System) module allows you to work with the file system on your computer.

Example:

const fs = require('fs');


File Read Examples:

1. Read Text File:

    fs.readFile('example.txt', 'utf8', (err, data) => {

      if (err) {

        console.error('Error reading file:', err);

        return;

      }

      console.log('File content:', data);

    });


2. Read HTML File:

    fs.readFile('example.html', 'utf8', (err, data) => {

      if (err) {

        console.error('Error reading file:', err);

        return;

      }

      console.log('File content:', data);

    });


3. Read JSON File:

    fs.readFile('example.json', 'utf8', (err, data) => {

      if (err) {

        console.error('Error reading file:', err);

        return;

      }

      const jsonData = JSON.parse(data);

      console.log('JSON content:', jsonData);

    });


Example Summary

Here’s a brief summary of all examples in a single Node.js project:

1. Install Nodemon:

    npm install -g nodemon


2. Create `app.js`:

    const http = require('http');

    const fs = require('fs');

    const url = require('url');

    const eventEmitter = require('./eventModule');

    const myModule = require('./myModule');


    // URL Module Example

    const address = 'http://example.com:8080/default.htm?year=2023&month=july';

    const parsedUrl = url.parse(address, true);

    console.log(parsedUrl.host);

    console.log(parsedUrl.pathname);

    console.log(parsedUrl.search);

    console.log(parsedUrl.query.year);

    console.log(parsedUrl.query.month);


    // FS Module Example

    fs.readFile('example.txt', 'utf8', (err, data) => {

      if (err) {

        console.error('Error reading file:', err);

        return;

      }

      console.log('File content:', data);

    });


    // Custom Module Example

    myModule.myFunction();

    console.log(myModule.myVariable);


    // Custom Event Module Example

    eventEmitter.emit('sayHello');

    

    // Creating a Server Example

    const server = http.createServer((req, res) => {

      res.writeHead(200, { 'Content-Type': 'text/plain' });

      res.write('Hello World!');

      res.end();

    });

    server.listen(3000, () => {

      console.log('Server running at http://127.0.0.1:3000/');

    });


3. Create `myModule.js`:

    const myFunction = () => {

      console.log("Hello from my module!");

    };

    const myVariable = "Exported Variable";

    module.exports = {

      myFunction,

      myVariable

    };


4. Create `eventModule.js`:

    const EventEmitter = require('events');

    const eventEmitter = new EventEmitter();

    eventEmitter.on('sayHello', () => {

      console.log('Hello from custom event module!');

    });

    module.exports = eventEmitter;


5. Create `example.txt`:

    This is a sample text file.


6. Run the app with Nodemon:

    nodemon app.js


--------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------



Custom.js

var msg="hello welcome to node js";

const fact=(num)=>{
    let f=1;
    for(i=1;i<=num;i++)
        {
            f=f*i;
        }
    return f;
}

const ischeck=(n)=>{
    if(n%2==0)
        {
            console.log("even number");
        }
        else 
        {
            console.log("odd number");
        }
} 

var emp={
    id:10,
    nm:'sourav',
    dept:'science',
    loc:'kolkata'
}

module.exports={
    mg:msg,
    factfun:fact,
    chk:ischeck,
    info:emp
}




event1.js
const events=require('events');

const handle=new events.EventEmitter();

handle.on('square',(n)=>{
     console.log("Square result : "+n*n);
})

handle.emit('square',5);



event2.js
const event=require('events');

const handle=new event.EventEmitter();

handle.on('first',()=>{
     console.log("first event is fired..!");
     handle.emit('second');
})

handle.on('second',()=>{
     console.log('second event is called');
     handle.emit('third');
})

handle.on('third',()=>{
    console.log('third event is called');
})

handle.emit('first');



evntmodule.js

const events=require('events');
const handle=new events.EventEmitter();

handle.on('iseven',(n)=>{
     if(n%2==0)
        {
            console.log("even");
        }
        else 
        {
            console.log("odd")
        }
})


handle.on('fact',(v)=>{
      let f=1;
      for(i=1;i<=v;i++)
        {
            f=f*i;
        }
        console.log(f);
}) 

handle.on('disp',(msg)=>{
    console.log(msg);
})

module.exports.evobj=handle;




package.json

{
  "name": "satsunbatch",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon server.js"
  },
  "author": "skundu",
  "license": "ISC",
  "dependencies": {
    "axios": "^1.7.2",
    "nodemon": "^3.1.4"
  }
}



read.js
const fs=require('fs');

fs.readFile('./test2.json',(err,data)=>{
    try{
        if(err) throw err; 
        let result=JSON.parse(data);
        console.log(result.city);
    }
    catch(err)
    {
        console.log(err);
    } 
       
})




read2.js
const fs=require('fs');
const http=require('http');

const port=4000;

fs.readFile('./test3.html',(err,data)=>{
      try 
      {
        if(err) throw err;
        console.log('read is success');
        let serv=http.createServer((req,res)=>{
            res.writeHead(200,{'Content-Type': 'text/html'});
            res.write(data);
            res.end();
        })

        serv.listen(port,()=>{
            console.log(`server is running in port ${port}`);
        })
      }
      catch(err)
      {
        console.log(err);
      }
})



server.js

const http=require('http');

const port=4000;

const server=http.createServer((req,res)=>{
    res.writeHead(200,{'Content-Type': 'text/html'});
    res.write(`<ul><li>hello express </li><li>hello php</li></ul>`);
    res.write('<h3>Thank You have a nice day!</h3>')
    res.write('<ol><li>hello welcome</li><li>thank you</li></ol>')
    res.end();
})

server.listen(port,()=>{
    console.log(`server is running in the port ${port}`)
})



url.js
const url=require('url');

var urlex='http://localhost:8080/default.html?year=2017&month=february'; 

console.log(url.parse(urlex));



use.js
const test=require('./custom');

console.log(test.mg);

console.log(test.factfun(5));

test.chk(20);

console.log(test.info);


use2.js
const evntmod=require('./evntmod');

evntmod.evobj.emit('iseven',10); 

evntmod.evobj.emit('fact',5);

evntmod.evobj.emit('disp','thank you');





Comments