Node.js : Introduction - Part 2
-
Node.js is a javascript runtime built on Chrome's V8 javascript engine. Node.js uses an even-driven, non blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm is the largest ecosystem of open source libraries in the world.
ඔය උඩ තියෙන්නේ Node.js වලට දීලා තියෙන අර්ථකතනය. මේකේදි මම පැහැදිලි කරන්න බලාපොරොත්තු වෙන්නේ මොකක්ද මේ කියන්නේ කියලා.
Node.js is a javascript runtime built on Chrome's V8 javascript engine.
කලින් කොටසේ මම කිව්වා node කියන්නේ javascript browser එකෙන් එලියේ වැඩ කරන්න පුලුවන් වෙන run-time environment එකක් කියලා. මේකේදි දැනගන්න ඕනේ වැදගත්ම දේ තමයි මේකේ පාවිච්චි වෙන්නේ සාමාන්ය javascript ම තමයි කියන එක. V8 කියන්නේ chromium project එක යටතේ හදපු open source javascript engine එකක්.මොකක්ද මේ event driven, non blocking i/o?
Node.js වල තියෙන්නේ එක thread එකයි. ඒ කියන්නේ අපේ මුලු application එකම දුවන්නේ එක thread එකක් ඇතුලේ.
I/O කියන්නේ input/output කියන එකට. මොකක් හරි file එකක් කිරීම, database එකකට record දැමීම, ගැනීම වගේ දේවල් අයිති වෙන්නේ මේකට. non-blocking කියන්නේ සරලවම එක දෙයක් කරලා ඉවර වෙනකම් බලන් ඉන්න ඕන නෑ කියන එක. පහල උදාහරණය බලන්න.
database එකකින් record එකක් ගන්න request එකක් ආවා කියලා හිතන්න. ඒ වෙලාවෙම file එකක් read කරන්න request එකක් එනවා. database එකට අපි අවශ්ය data ඉල්ලලා request එකක් යවලා ඒ data නැවත එනකම් බලන් ඉන්නේ නැතුව ඊලග වැඩේ පටන් ගන්නවා. ඒ කියන්නේ file එක read කරන එක. කොයි වෙලාවකට හරි අර database එකෙන් data එව්වට පස්සේ අදාල request එකට ඒ data යවනවා.
මේකෙදි node.js වල තියෙන event loop කියන එක භාවිතා වෙනවා. සරලවම කිව්වොත් node.js listener කෙනෙක් attach කරනවා කිසියම් event එකකට උඩ උදාහරණෙනම් database එකෙන් data එනකම්. කොයිම වෙලාවක හරි data ආවම ඒ event එකට අදාල callback එක් run වෙනවා.
function getUserName(id, callback) { //get userData from database, then run callback callback(userData.name); } getUserName(12, function(name) { console.log(name); }); console.log("Hello");
උඩ තියෙන්නේ සම්පූර්ණ නොකල code එකක්. මේකෙදි ඔයාලට පේනවා ඇති අපි getUserName function එකට call කරනකොට ඒක ඇතුලට තවත් function එකක් pass කරලා තියෙනවා. මේක තමයි callback එක. කොයිම වෙලාවක හරි database එකෙන් අදාල data ලැබුනාම මේක වෙනවා.
හැබැයි ඒකට පහලින් තියෙන console.log කියන statement එක ඒක වෙනකම් බලන් ඉන්නේ නැ. එතකොට ඕකෙ output එකේදි මුලින්ම hello කියලත් ඊට පස්සේ අදාල නමත් බලා ගන්න පුලුවන්.
මේකෙදි තේරුම් ගන්න ඕනෙ දේ තමයි non blocking වලින් අපේ i/o වල වේගය වැඩි කරන්නේ නැ කියන එක. මේකෙ වාසිය එක පාර දේවල් එකකට වඩා කරන්න පටන් ගන්න අපිට ඉඩ සලසන එක.
දැන් මේක තමයි සරලවම event driven, non-blocking i/o කියන එක. මේ නිසා සාමාන්ය වේගයට වඩා 50% විතර වේගයෙන් අපේ application run වෙනවා. (අවස්තාව අනුව).
මොකක්ද මේ npm?
මේක javascript වලින් ලියපු codes වල එකතුවක්. ඒ කියන්නේ node හදපු කාලෙ ඉදලා ආපු ප්රශ්න වල එක එක developer ලියපු codes. මේකෙ node app එකක් ලියද්දී එන ප්රශ්ණ වලින් 95% වගේ විසදන්න පුලුවන් library (සරලවම ලියපු codes වල එකතුවක්) හොයාගන්න පුලුවන්.මෙන්න මේවා තමයි මම හිතන විදියට node වලදී දැනගන්න ඕන මූලිකම දේවල්. වෙනස්වීම් වෙන්න තියෙනම් කමෙන්ට් කරන්න.
-
@sudo niyamai machan... :heart:
-
සරලම පැහැදිලි කිරීමක් (none blocking) ගැන . ලංකාවේ ගොඩක් අය තාම node Js use කරනවා කියලා මම දැකලා නැ . node Js ඉගන ගන්න හොද අවස්ථාවක් මේක . ගොඩක් හොද වැඩක් දිගටම කරගෙන යමු
-
Can u please put in english
-
superb bro. nice explanation.
-
@Tize-Thamizh you can easily find better English tutorials online. (like https://www.w3schools.com/nodejs/nodejs_intro.asp). I simply wrote this for beginners who likes to learn stuff in native language.