Skip to main content

"NodeJS Basics" Theory That You Should Know

To know better about NodeJS, you should know Javascript. So I start with Javascript

  • Javascript is in top 3 language.
  • JavaScript is developed on December 4, 1995. It was a client-side scripting language. So it was used only in browsers.
  • Javascript uses Javascript engine that is used by browsers to convert code into machine code.
  • We have multiple JavaScript engines just like we have different browsers like Firefox, Chrome, internet explorer, edge etc.
  • First JavaScript engine was SpiderMonkey developed by Netscape Communication by the creator of JavaScript Brendan Eich and it was developed in 10 days.
  • Different browsers are using a different type of Javascript Engine:-
    • Internet Explorer is using Chakra
    • Firefox is using Spidermonkey
    • Chrome is using V8
    • Microsoft Edge is rebuild using a chromium-based browser and now it is using V8 engine.
  • Most Famous engine is now V8 Javascript engine because it is faster and can be used for mobile development, desktop app development and now server-side development.
  • For server-side development, V8 engine is used to build a Runtime Environment which will work on the machine and it is named as NodeJS.
NodeJS is not a programming language and not a framework. It is a basically a Runtime Environment where you can run JavaScript.
  • Using NodeJS, you can run javascript code on a standalone physical machine.
  • You can build a standalone application using NodeJS.
  • NodeJS is not a framework so we need some framework to work with NodeJS, So we got ExpressJS.
  •  NodeJS has NPM (Node Package Manager) that has a huge database of modules that you can use them or you can publish your own module in NPM.

In simple words, NodeJS is the Javascript runtime environment which uses Javascript V8 engine.

What is NodeJS?
  • NodeJS uses a single thread to handle the request/response from clients.
  • Suppose, you have 100 clients and server takes 3 seconds to complete the one client's request then 100th client needs to wait for 3000 sec to get served by the NodeJS application.
  • So, resolve the above issue single thread don’t wait for the response from the server and then the single thread will not be blocked for a single client.
  • But how it will work? NodeJS uses two concepts:-
    •     Asynchronous
    •     Non-blocking I/O
  • Non-blocking I/O means whenever you get the request from the client then the single thread will send the request to someone else, So current thread will not be busy working with that request.

  • In the above image, Single thread will send the request to the worker and will take another request from the client. If a single thread gets another request from the client then again single thread assign the task to another worker and that worker will process the task and then the single thread will come back to accept the response. This is done by Asynchronous function using callback from the individual workers.
  • So we have one question, If NodeJS does not support the multiple threads then how we are able to create these workers?
  • To answer the above question, NodeJS uses the concept of “libuv”. libuv is the special library built for NodeJS but we can use other applications as well.
  • Libuv provides the concept of non-blocking I/O. It is built in C language which uses the system kernel and kernel has multiple threads. So, In NodeJS, you are not using multiple threads. behind the scene, your kernel is implementing the multiple threads. So above these workers are threads that make NodeJS fast and flexible.

What is NPM?
  • NPM stands for Node Package Manager.
  • NPM provides various types of already built modules like api for connecting the application with database
  • Modules can be built by anyone and distribute to the NPM for sharing with others.
  • Modules can be anything like a simple calculation program, array handling etc.
  • NodeJS has lots of inbuilt modules like http, fs(file system) to access system files for read/write operations, cryptography for security. 


Popular posts from this blog

Nudge Notes - Python Language Basics

  1. Datatypes in Python: None Numeric float -> 1.5 int -> 5 complex -> 2+5j bool -> True/false Sequence List -> [3,5,6,7,1] Tuple -> (3,5,6,7,1) Set -> {3,5,6,7,1} String -> "Akshay" Range  range(5) -> range(0, 5)  list(range(5)) -> [0,1,2,3,4] list(range(2,10,2)) -> [2,4,6,8] Dictonary product_price = {'book': 50, 'pen': 300, 'eraser': 10}  product_price.get('book') -> 50 2. Number Conversion in Python bin( 28 ) -> 0b 11100 oct( 28 ) -> 0o 34  hex( 28 ) ->  0x 1c 3. Swap two numbers in Python           a = 5       b = 6 Method #1:             a, b = b, a Method #2            a = a + b         b = a - b         a = a - b 4. "math" module in python     import math math.sqrt(25) -> 5.0 math.floor(2.5) -> 2.0 math.ceil(2.5) -> 3.0 math.pow(2, 3) -> 8.0 math.pi -> 3.141592653589793 math.e -> 2.718281828459045 5. How to import a module in python import math import math as

Python Language Basics - 2

Slice string in python: details= "Akshay Kumar" # details[:6] and details[0:6] will give same result print(details[: 6 ]) # OUTPUT: Akshay # details[20:] and details[20:34] will give same result print(details[ 20 :]) # OUTPUT: # -1 denotes the reverse order print(details[ 11 ::- 1 ]) #OUTPUT: ramuK yahskA # Here -9 denotes the count from the end of the string print(details[:- 9 :- 1 ]) #OUTPUT: em.atpug #Both syntax gives the same result for reversing the string print(details[- 1 ::- 1 ]) #OUTPUT: em.atpugyahska--atpuG ramuK yahskA print(details[::- 1 ]) #OUTPUT: em.atpugyahska--atpuG ramuK yahskA Format print in python: print( "hi, My name is {} and I am a {}. I like {}." .format( "Akshay" , "Software Engineer" , "python" )) In the above print statement, "{}" refers to the placement of the values given in "format()" function. First value in the order "format()"

Simple way to import and export collections in MongoDB

  A simple command will help to import and export collections in mongoDB. Export/Dump Collections in MongoDB: mongodump -d <database_name> -o <directory_backup> The above command will dump all the collections in the defined directory. eg: if your database name is awesome_db and you selected the my_db_backup as backup directory then you need run below command: mongodump -d awesome_db  -o my_db_backup If your db has authentication enabled then pass -u <username> -p <press enter> with the above command. Import/Restore Collection in MongoDB: mongorestore -d <database_name> <directory_backup> Similarly this command will restore the collections in the mongodb database.  for eg: mongodump -d awesome_db -o my_db_backup pass the authentication -u <username> -p <press enter> if your mongodb has authentiction.