├── README.md ├── Stream.js ├── dir.js ├── server.js ├── Basics ├── to_Know └── Node_StartHere /README.md: -------------------------------------------------------------------------------- 1 | # Node_JS -------------------------------------------------------------------------------- /Stream.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const path = require('path') 3 | const rs = fs.createReadStream(path.join(__dirname,'files','test1.txt'),{encoding:'utf8'}) 4 | const ws = fs.createWriteStream(path.join(__dirname,'files','print.txt')) 5 | 6 | // rs.on('data',(dataChunk) => { 7 | // ws.write(dataChunk) 8 | // }) 9 | rs.pipe(ws) -------------------------------------------------------------------------------- /dir.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | 3 | if(fs.existsSync('./new')){ 4 | fs.rmdir('./new',(err)=>{ 5 | if(err) throw err 6 | console.log("Directory Deleted") 7 | }) 8 | } 9 | if(!fs.existsSync('./new')){ 10 | fs.mkdir('./new',(err)=>{ 11 | if(err) throw err 12 | console.log("Directory Created") 13 | }) 14 | } 15 | process.on('uncaughtException', err => { 16 | console.error(`There was error :${err}`) 17 | process.exit(1) 18 | }) -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const fsPromises = require('fs').promises 2 | const path = require('path') 3 | 4 | const fileOps = async() => { 5 | 6 | try{ 7 | const data = await fsPromises.readFile(path.join(__dirname,'files','test.txt'),'utf8') 8 | console.log(data) 9 | 10 | await fsPromises.writeFile(path.join(__dirname,'files','study.txt'),'hgdsf yug reyasfv s') 11 | console.log('write completed') 12 | 13 | await fsPromises.appendFile(path.join(__dirname,'files','study.txt'),'\n \n rahul thank you') 14 | console.log('appended completed') 15 | 16 | await fsPromises.rename(path.join(__dirname,'files','study.txt'),path.join(__dirname,'files','Height.txt')) 17 | console.log('rename completed')} 18 | 19 | //to delete file "await fsPromises.unlink(path.join(__dirname,'files','test.txt'))" 20 | catch(err){ 21 | console.error(err) 22 | } 23 | } 24 | 25 | fileOps() -------------------------------------------------------------------------------- /Basics: -------------------------------------------------------------------------------- 1 | 2 | Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts. 3 | 4 | console.log("Hai dhilipkumar") 5 | 6 | let os=require('os'); 7 | let path=require('path'); 8 | console.log(os.type()); 9 | console.log(os.version()); 10 | console.log(os.homedir()); 11 | console.log(path.__filename) 12 | 13 | *************** to run type: node file_name 14 | 15 | let math=require('./maths') 16 | console.log(os.tmpdir()) 17 | console.log(math.add(2,3)) 18 | console.log(math.sub(2,3)) 19 | console.log(math.div(2,3)) 20 | 21 | *************** 22 | { 23 | PS D:\Node JS> node server 24 | Hai dhilipkumar 25 | 5 26 | -1 27 | 0.6666666666666666 28 | PS D:\Node JS> node server 29 | Hai dhilipkumar 30 | C:\Users\lenovo\AppData\Local\Temp 31 | 5 32 | -1 33 | 0.6666666666666666 34 | PS D:\Node JS> 35 | } 36 | 37 | ****************** 38 | 39 | to read about in website of node js documentation : 40 | https://nodejs.org/docs/latest/api/ 41 | 42 | *************************** to read file in node js 43 | 44 | let fs=require('fs') 45 | let path=require('path') 46 | 47 | fs.readFile('./read_file/text.txt','utf8',(err,data) => { =====>>>> its throw error in other os because different os path may be differ insted of this using path 48 | ******************************* fs.readFile(path.join(__dirname,'read_file','text.txt'),'utf8',(err,data) => { ********************************** 49 | if(err) throw err; 50 | console.log(data); 51 | }); 52 | 53 | process.on('uncaughtException',err =>{ 54 | console.error(`there is error :${err}`) 55 | process.exit(1) 56 | }) 57 | 58 | *************** *********to write the new file 59 | let fs=require('fs') 60 | let path=require('path') 61 | 62 | let tCse='dhilipkumar from the department so called cse' 63 | fs.writeFile(path.join(__dirname,'read_file','summa.txt'),tCse,(err)=>{ 64 | if (err) throw err; 65 | console.log('Writ completed....'); 66 | }); 67 | 68 | process.on('uncaughtException',err =>{ 69 | console.error(`there is error :${err}`) 70 | process.exit(1) 71 | }) 72 | 73 | *************************** to add new text to already existing file 74 | 75 | 76 | -------------------------------------------------------------------------------- /to_Know: -------------------------------------------------------------------------------- 1 | https://github.com/gitdagray/nodejs_web_server/tree/main/views 2 | view the full code 3 | 4 | 5 | 6 | const http = require('http'); 7 | const path = require('path'); 8 | const fs = require('fs'); 9 | const fsPromises = require('fs').promises; 10 | 11 | const logEvents = require('./logEvents'); 12 | const EventEmitter = require('events'); 13 | class Emitter extends EventEmitter { }; 14 | // initialize object 15 | const myEmitter = new Emitter(); 16 | myEmitter.on('log', (msg, fileName) => logEvents(msg, fileName)); 17 | const PORT = process.env.PORT || 3500; 18 | 19 | const serveFile = async (filePath, contentType, response) => { 20 | try { 21 | const rawData = await fsPromises.readFile( 22 | filePath, 23 | !contentType.includes('image') ? 'utf8' : '' 24 | ); 25 | const data = contentType === 'application/json' 26 | ? JSON.parse(rawData) : rawData; 27 | response.writeHead( 28 | filePath.includes('404.html') ? 404 : 200, 29 | { 'Content-Type': contentType } 30 | ); 31 | response.end( 32 | contentType === 'application/json' ? JSON.stringify(data) : data 33 | ); 34 | } catch (err) { 35 | console.log(err); 36 | myEmitter.emit('log', `${err.name}: ${err.message}`, 'errLog.txt'); 37 | response.statusCode = 500; 38 | response.end(); 39 | } 40 | } 41 | 42 | const server = http.createServer((req, res) => { 43 | console.log(req.url, req.method); 44 | myEmitter.emit('log', `${req.url}\t${req.method}`, 'reqLog.txt'); 45 | 46 | const extension = path.extname(req.url); 47 | 48 | let contentType; 49 | 50 | switch (extension) { 51 | case '.css': 52 | contentType = 'text/css'; 53 | break; 54 | case '.js': 55 | contentType = 'text/javascript'; 56 | break; 57 | case '.json': 58 | contentType = 'application/json'; 59 | break; 60 | case '.jpg': 61 | contentType = 'image/jpeg'; 62 | break; 63 | case '.png': 64 | contentType = 'image/png'; 65 | break; 66 | case '.txt': 67 | contentType = 'text/plain'; 68 | break; 69 | default: 70 | contentType = 'text/html'; 71 | } 72 | 73 | let filePath = 74 | contentType === 'text/html' && req.url === '/' 75 | ? path.join(__dirname, 'views', 'index.html') 76 | : contentType === 'text/html' && req.url.slice(-1) === '/' 77 | ? path.join(__dirname, 'views', req.url, 'index.html') 78 | : contentType === 'text/html' 79 | ? path.join(__dirname, 'views', req.url) 80 | : path.join(__dirname, req.url); 81 | 82 | // makes .html extension not required in the browser 83 | if (!extension && req.url.slice(-1) !== '/') filePath += '.html'; 84 | 85 | const fileExists = fs.existsSync(filePath); 86 | 87 | if (fileExists) { 88 | serveFile(filePath, contentType, res); 89 | } else { 90 | switch (path.parse(filePath).base) { 91 | case 'old-page.html': 92 | res.writeHead(301, { 'Location': '/new-page.html' }); 93 | res.end(); 94 | break; 95 | case 'www-page.html': 96 | res.writeHead(301, { 'Location': '/' }); 97 | res.end(); 98 | break; 99 | default: 100 | serveFile(path.join(__dirname, 'views', '404.html'), 'text/html', res); 101 | } 102 | } 103 | }); 104 | server.listen(PORT, () => console.log(`Server running on port ${PORT}`)); 105 | -------------------------------------------------------------------------------- /Node_StartHere: -------------------------------------------------------------------------------- 1 | Node JS: 2 | Node js is javascript runtime environment build on the chrome v8 Javascript engine 3 | chrome - V8 4 | firefox - spider monkey 5 | safari - javascript core 6 | microsoft - chakra 7 | 8 | *** Node is program that include JavaScript V8 engine with some module that give us capability which is not available in browser *** 9 | *** we can access file system, network and some other properties *** 10 | 11 | How it works? 12 | node js handle multple request using thread. 13 | *** node is "asyncronus" which handle multiple request with limited thread *** 14 | node continuesly monitor Event queue because database prepared query it put notification in event queue then thread pass information to client. 15 | 16 | Important Node modules? 17 | * http 18 | * os 19 | * file 20 | * event 21 | * path 22 | * process 23 | * query String 24 | * Stream 25 | 26 | Global Object? 27 | * console -> console.log(),console.error() 28 | * setTimeout, setInterval, setImmediate, clearTimeout, clearInterval, clearImmediate 29 | setInterval - it is call function in certain interval, 30 | *** it called continously untile clearInterval or windows closed 31 | * __dirname 32 | * __filename 33 | 34 | "In browser " all function and variable can be access by windows object 35 | basically all fuction while call with prefix window object 36 | likely 37 | *** console.log() -->> window.console.log() 38 | setTimeout() -->> window.setTimeout() 39 | "In node " we cannot access variable and function globally 40 | *** console.log() -->> global.console.log() 41 | setTimeout() -->> global.setTimeout() 42 | 43 | *** most of time we use const for require we dont want to override this variable *** 44 | 45 | Important topics to know: 46 | NPM 47 | Asyncronous Operation 48 | CRUD operation 49 | Data Validation 50 | Authentication and Authorization using json web token 51 | Handling and logging Error 52 | Unit and Integration Test 53 | Test Driven Development 54 | Deployment the application in cloud 55 | 56 | Modules: 57 | Path modules 58 | const path = required("path") 59 | 60 | parse() -> { root:'/', 61 | dir: , 62 | base: , 63 | ext: , 64 | name: } 65 | OS modules 66 | const os = required("os") 67 | 68 | freemem() -> return total free memory in meachine 69 | totalmem() -> return total memory in mechine 70 | userInfo() -> return current user 71 | 72 | EventEmitter 73 | const EventEmitter = required("event") 74 | *** this EventEmitter is class not an object like other modules 75 | we need to create object for method to use 76 | const event = new EventEmitter(); 77 | ** Mostly used method in event 78 | * event.emit('messageloged') 79 | * event.on() or event.eventListener() 80 | 81 | event.on('messageloged',function(){ 82 | console.log('event emited') 83 | }) 84 | event.emit('eventEmited'); 85 | 86 | Eventargument 87 | event argument is by passing the argument to event 88 | while we emit the event pass the argument 89 | 90 | pass multiple value in object 91 | * event.emit('messageloged',{id:1,url:'https://'}) 92 | * event.on('messageloged',(arg)=>{ 93 | console.log("event Emitted"+arg) 94 | }) 95 | 96 | *** but in above eventargument we only use eventListener in that file only 97 | to overcome this we need extending event emitter 98 | 99 | EventEmitter 100 | # logger.js 101 | 102 | const EventEmitter = require('event') 103 | 104 | class Logger extend EventEmitter{ 105 | log(message){ 106 | console.log(message) 107 | 108 | this.emit('messageLogged',{id:1,url:'https://'}) 109 | } 110 | } 111 | module.export = Logger ; 112 | 113 | # app.js 114 | 115 | const EventEmitter = require('event') 116 | 117 | const Logger = requied('./logger') 118 | const logger = new Logger(); 119 | 120 | logger.on('messageLogged',(arg)=>{ 121 | consolr.log('Listened called',arg) 122 | }) 123 | logger.log('message') 124 | 125 | HTTP Modules 126 | 127 | const http = require('http') 128 | 129 | const server = http.createServer((req,res)=>{ 130 | if(req === '/'){ 131 | res.write('Hello World!') 132 | res.end() 133 | } 134 | if(req === '/api/contact'){ 135 | res.write(JSON.stringify([1,2,3])) 136 | res.end() 137 | } 138 | }) 139 | server.listen(3000) 140 | 141 | console.log("port Listening...") 142 | --------------------------------------------------------------------------------