firstly to run a node js file, we save the file, lets say the file is named app.js so we execute
node app.js
we can do that by exporting the content from the other file
const tutorial = require("./tutorial")
console.log(tutorial)
app.js
const sum = (num1, num2) => num1 + num2;
module.exports = sum
Tutorial.js
Node.js Module. Module in Node.js is a simple or complex functionality organized in single or multiple JavaScript files which can be reused throughout the Node.js application. Each module in Node.js has its own context, so it cannot interfere with other modules or pollute global scope.
const tutorial = require("./tutorial")
console.log(tutorial)
console.log(tutorial.sum(5, 5))
console.log(tutorial.pie)
console.log(tutorial.somefunction)
app.js
const sum = (num1, num2) => num1 + num2;
const pie = 3.14
function somefunction() {
return "some function"
}
module.exports.sum = sum
module.exports.somefunction = somefunction()
module.exports.pie = pie
Tutorial.js
const sum = (num1, num2) => num1 + num2;
const pie = 3.14
function somefunction() {
return "some function"
}
module.exports = {sum : sum, pie: pie, somefunction : somefunction}
Tutorial.js
When we require the events module we get an EventEmitter class(That is why the constant variable starts with an uppercase letter defining that EventEmitter is a class). Now to access the functionality offered by it we have to create an object of the class.
const EventEmitter = require('events')
const eventEmitter = new EventEmitter
eventEmitter.on('myevent', (num1, num2) =>{
console.log("ths sum is " + (num1 + num2))
})
eventEmitter.emit('myevent', 1, 2)
const EventEmitter = require('events')
const eventEmitter = new EventEmitter
// Note that the capital EventEmitter is used when objects extends it
// Because small one is an object itself
class Person extends EventEmitter {
constructor(name) {
// sllows us to use this
super()
this._name = name
}
get name() {
return this._name
}
}
var akshay = new Person('akshay')
var kumar = new Person('kumar')
akshay.on('name',()=> {
console.log("my name is " + akshay._name)
})
kumar.on('name', ()=>{
console.log("my name is " + kumar._name)
})
//events are emitted synchronously
//jo event pehle call hua pehle chalega
kumar.emit("name")
akshay.emit("name")
allows us to promt the user and take input
const readline = require('readline')
const rl = readline.createInterface({input: process.stdin,
output: process.stdout})
var num1 = Math.floor((Math.random() * 10) + 1)
var num2 = Math.floor((Math.random() * 10) + 1)
let answer = num1 + num2
rl.question(`what is the value of ${num1} + ${num2} ?`, (userinput)=>{
if(userinput.trim() == answer)
rl.close()
else {
console.log('Incorrect')
rl.setPrompt("The answer is incorrect please try again")
rl.prompt()
}
})
rl.on('close', ()=>{
console.log("correct answer")
})
// called whenever enter is presses i.e after prrompt in our case so results in infinite loop if answer false
rl.on('line', (userinput)=> {
if(userinput.trim() == answer)
rl.close()
else {
rl.setPrompt("incorrect again please enter again")
rl.prompt()
}
})
const fs = require('fs')
fs.writeFile("example.txt", "This is the text to be writtem", (err)=>{
if(err)
console.log(err)
else {
console.log("file sucessfully written")
}
})
const fs = require('fs')
fs.readFile('example.txt', 'utf8', (err, file)=> {
if(err) {
console.log(err)
} else {
console.log(file)
}
})
const fs = require('fs')
fs.rename('example.txt', 'example2.txt', (err)=>{
if(err)
console.log(err)
else
console.log("file renamed sucessfullt")
})
const fs = require('fs')
fs.appendFile('example2.txt', "This the text to be appended", (err)=>{
if(err)
console.log(err)
else
console.log("file appended sucessfullt")
})
const fs = require('fs')
fs.unlink('example2.txt', (err)=>{
if(err)
console.log(err)
else
console.log("file deleted sucessfully")
})
const fs = require('fs')
fs.mkdir('newDir', (err)=>{
if(err)
console.log(err)
else {
console.log("directory created")
fs.writeFile("./newDir/1.txt", "this is text", (err)=> {
if(err)
console.log(err)
})
fs.writeFile("./newDir/2.txt", "this is another text", (err)=> {
if(err)
console.log(err)
})
fs.readdir('newDir', (err, files)=> {
if(err)
console.log(err)
else
console.log(files)
})
}
})
Streams read and write data in the form of chunks so it becomes easy to load very large files when buffer size is limited
const fs = require('fs')
const readStream = fs.createReadStream('example.txt', 'utf8')
readStream.on('data', (chunk) => {
console.log(chunk)
})
when we make the call from the root domain we call the if part and when from any other domain we use the else part.
const http = require('http')
const server = http.createServer((req, res) => {
if(req.url == '/') {
res.write('hello world from node js');
res.end();
} else {
res.write('using some other ');
res.end();
}
})
server.listen('3000');
const http = require('http')
const fs = require('fs')
const server = http.createServer((req, res) => {
const readStream = fs.createReadStream('./newDir/index.html');
res.writeHead(200, {'Content-type': 'text/html'});
readStream.pipe(res);
});
server.listen('4000');