Full width home advertisement

Post Page Advertisement [Top]




හරි එහෙනං සාදරයෙන් පිලිගන්නවා අලුත්ම Node JS  ලිපි පෙළකට. මොකද්ද මේ Node.JS කියල කියන්නේ එතකොට?  හරි.. අපි මෙහෙම ගමුකො. ඔයාට ඕනේ වෙනවා සර්වර් එකක් එක්ක ගනුදෙනු කරන්න. ඉතිං ඔයාට මේකට සර්වර් සයිඩ් නැත්නම් සර්වර් එකක් ඇතුලේ දුවන ප්‍රෝග්‍රෑම් එකක් ලියන්න ඕනි නෙ. ඉතිං ඔයාල සාමාන්‍යයෙන් මේක කරන්නේ කොහොමද?
ඔන්න PHP  නැත්නම් JAVA  වගේ ටිකක් ඔයාලට පුරුදු ලැoවේජ් එකකින් ප්‍රෝග්‍රෑම් එකක් ලියයි. හරි මේ වැඩේම අපිට දැන් (2008 න් පස්සෙ) java script කියල ඔයාලට බොහොම හොඳට අහල පුරුදු වෙබ් ෆ්රන්ට් එන්ඩ් වැඩ වලට පාවිච්චි කරපු ලැoවේජ් එකෙන් කරන්න පුළුවන්. මෙන්න මේ වැඩේ කරන්න හදපු නැත්නං සර්වර් වල Java Script දුවන්න හදපු සර්වර් එන්වෙයාර්මන්ට් එකට තමා Node.JS කියල කියන්නෙ.
මේක කළේ රයන් ඩාල් කියන මෘදුකාංග නිර්මාපකවරයා. රයන් කල්පනා කළා සර්වර් එකක ජාවා ස්ක්‍රිප්ට් දුවවන්න පුළුවන් ක්‍රමයක්. එයා කල්පනා කළා වෙබ් බ්‍රව්සර් වල කොහොමද මේක දුවන්නේ කියල. නැත්නම් java script ඉන්ටර්ප්රිට් වෙන්නේ කොහොමද කියල.
වෙබ් බ්‍රව්සර් වල ජාවා ස්ක්‍රිප්ට් ඉන්ටර්ප්රිට් වෙන්න තියෙනව ජාවා ස්ක්‍රිප්ට් එන්ජින් එක කියල එකක්. උදාහරණයක් ගත්තොත් ඔයාල හොඳටම දන්නා ෆයර්ෆොක්ස් බ්‍රව්සර් එකේ තියෙන්නෙ ස්පයිඩර් මන්කි කියන එන්ජිං එක. කවුරුවත් ගණන් ගන්නේ නැති මයික්‍රොසොෆ්ට් ලගේ බ්‍රව්සර් එකේ තියෙන්නෙ චක්‍ර කියන එන්ජිං එක. මේ කාලෙ ගොඩක්ම ජනප්‍රිය ක්‍රෝම් බ්‍රව්සර් එකේ තියෙන්නෙ V8 කියන එන්ජින් එක. දැනට මේ එන්ජින් අතරින් වේගවත්ම එක තමා ක්‍රෝම් V8 කියන්නෙ. ඔය 2008 ට ආසන්න කාලෙකදී ගුගල් සමාගමෙන් V8 එන්ජින් එක Open Source කළා. රයන් මහත්තය කළේ මේ ඕපන් සෝස් V8 එන්ජිං එක අරං C++ ප්‍රෝග්‍රෑම් එකක් ඇතුලට දාල මෙයාව තනියම රන් කරන්න පුළුවන් විදියට හදපු එක.

මොකද මේ Node.JS මේහැටි විශේෂ?

හේතුව තමා Node.JS ගොඩක් වේගවත්. හැබැයි මේක දැන් කාත් එක්ක වේගවත් ද කියල නං සසදන්න අමාරුයි 2018 දි. උදාහරණයක් විදියට Java Spring Boot Vert.x  Node.JS වලට වඩා වේගවත් ව වැඩ කරනවා කියල කතාබහක් යනවා. සැසඳීමක් ඕනේ නම් මෙතන ක්ලික් කරන්න . ඒ වගේම Node JS දුවන්නේ තනි ත්‍රෙඩ් එකක. ඒත් තනි ත්‍රෙඩ් එකක දුවලත් කොහොමද අ මේක මේ තරම් වේගවත් වුනේ කොහොමද සර්වර් එකට එන රික්වෙස්ට් ටික ගැන බලාගන්නෙ?

හරි මං මේකට පොඩි උදාහරණ දෙකක් ගන්නම්. හිතන්නකෝ ඔයා ගෙදර ඉන්න ගමන් ප්ලේන්ටියක් හදන්න යන්නෙ. ඒ ගමන් ඔයාට බඩගින්නකුත් හැදිලා සැන්විච් එකකුත් හදන්න හිතෙනව. ඔයා තේ එක මුලින් හදනවා කියල හිතමුකො.

ඔන්න ඔයා කේතලේ ලිපෙන් තිබ්බා. දැන් ඔයාට වතුර පැහෙනකන් බලං ඉන්නත් ඕනේ නෙ ඒ වෙලාව කිසි වැඩක් නැතිව නිකන් තියෙන්නෙ . ඒ අතරේ ඕනේ නං ඔයාට පුළුවන් සැන්විච් එක හදන්න ගන්න. ඊට පස්සෙ වතුර පැහුනාම ප්ලේන්ටිය හදාගන්න.

මෙන්න මේ විදියට තමා Node JS වැඩ කරන්නේ.

ඔයා කේතලේ තියල වතුර රත් වෙනකන් ඉඳල , ප්ලේන්ටිය හදල ඉවර වෙලාම සැන්විච් එක හැදුව  නම්... අන්න Java PHP ASP වගේ ඒවා ඔය විදියට වැඩ කරන්නෙ.

Node JS මේ වැඩේට පාවිච්චි කරන්නේ ඇසින්ක්‍රෝනස් ප්‍රෝග්‍රෑමින් කියන ක්‍රමය.



හරි දැන් අපි වැඩේට බහිමු.  ඔයාලට Node JS ඩිවලොප්මන්ට් වැඩ ඔයාලගේ මැෂින් එකක කරන්න නම් Node JS Runtime එක ඉන්ස්ටෝල් කරගන්න වෙනව. මේ ලින්ක් එකට ගිහින් ඩවුන්ලෝඩ් කරගන්නකෝ. ඔය LTS කියන්නෙ Latest Stable නැත්නන් කරදර අඩුම එ එක. Current කියන එක තමා අළුත් ම එක. තාම පරීක්ෂණ මට්ටමේ තියෙන නිසා කරදර දෙන්නත් බැරි නැහැ. හැබැයි Current Build එක ඇතුලේ අළුත් ම වැඩ කෑලි  අ ඇතුලත් වෙනවා.

ඉතිං එහෙනං ඩවුන්ලෝඩ් කරන් ඉන්ස්ටෝල් කරගන්න. මේක ඉන්ස්ටෝල් කරද්දී ගොඩාක් වැදගත් කොටසකුත් ඔයාගේ මැෂින් එකට ඉන්ස්ටෝල් වෙනවා. ඒ තමා NPM නැත්නම් Node Package Manager එක. මේක තමා ලෝකේ ලොකුම සොෆ්ට්වෙයා රෙජිස්ට්‍රි එක. මේක ඇතුලේ බිලියන තුනකට ආසන්න නැවත පාවිච්චි කරන්න පුළුවන් කෝඩින් පැකේජ විදිහට හදල තියෙනව. ඔයාලට තියෙන්නෙ පාවිච්චි කරන්න විතරයි.


වැඩේ හරි එහෙනම්. හරි දැන් තව වැඩක් තියෙනව. අපි බලමු සරල ඇසින්ක්‍රෝනස් ෆන්ෂන් එකක් ලියල...

  



මේ මොකද්ද වෙලා තියෙන්නෙ?
  • මම ජාවා ස්ක්‍රිප්ට් ෆයිල් එකක් හැදුවා මම පාවිච්චි කරන IDE එකේ. ඔයාලත් පාවිච්චි කරලා බලන්න Visual Studio Code මම දැකපු සුපිරිම IDE එකක්.
  • ඊට පස්සෙ මම මේ කෝඩ් එක ටයිප් කරලා නෝඩ් පාවිච්චි කරලා මේක රන් කළා.
  • ඔයාල නෝඩ් හරහා ෆයිල් එකක් රන් කරනවා නම් node කියන වචනෙ එක්ක ඉඩක් තියල ෆයිල් එකේ නම ටයිප් කරන්න. මගේ උදාහරණයෙදි නම් node async.js
  • දැන් අපි කෝඩ් එක දිහා ටිකක් බලමු.
  • තුන්වෙනි ලයින් එකේ තියෙන්නෙ setTimeout කියන ෆන්ෂන් එක. මේක ටයිමර් එකක්. මේකේ හැටියට නම් මම තත්පර දෙකකට පස්සෙ නැත්නම් මිලි තත්පර 2000 කට පස්සෙ කොන්සෝල් එකේ This should display first කියන වචන ටික පෙන්නන්න හදල තියෙනව.
  • ඊට පස්සෙ ඔය ටයිමර් එක වැඩ කලාට පස්සෙ this should display second කියන එක ප්‍රින්ට් වෙන්න හදල තියෙනව.
  • දැන් බලන්න මේක රන් කලාම වුන දේ... දෙවෙනියට ප්‍රින්ට් වෙන්න ඕනේ එක පළවෙනියට ප්‍රින්ට් වෙලා. ඇයි මෙහෙම උනේ?
    මේකට හේතුව තමා මේ setTimeout කියන හාදයා ඇසින්ක්‍රෝනස් ෆන්ෂන් එකක්.
  • මේක හරියට මම කලින් කියපු තේ හදන වැඩේ වගේම තමා. ඔයා වතුර එක රත් වෙලා තේ එක හදල ඉවර වෙනකම් ඉන්නෙ නැහැ සැන්විච් හදන්න. ඔයා වතුර එක රත් වෙන අතරේ සැන්විච් එක හදනව.

හදමු ඔයාලගේ පළවෙනිම සර්වර් එක ...

ඉතිං හදමු අපි පොඩි සර්වර් එකක්. මෙයාට පුළුවන් ඔයාල වෙබ් බ්‍රව්සර් එක හරහා සර්වර් එකට රික්වෙස්ට් එකක් යැව්වහම Hello World කියල රෙස්පොන්ස් එකක් බ්‍රව්සරේට එවන්න.



වැඩිය නෑ ලයින් 8ක කෝඩ් එකක්. දැන් අපි බලමු මොකක්ද මේකේ මේ කරලා තියෙන්නෙ කියල.

  • ඔය පළවෙනි ලයින් එකෙන් අපි http මොඩියුල් එක අපේ ප්‍රොජෙක්ට් එකට අරං තියෙන්නෙ. මේ http මොඩියුල් එක built-in මොඩියුල් එකක්. මේ මොඩියුල් එක HTTP ප්‍රොටෝකෝල් එක හරහා දත්ත හුවමාරු කරන්න පාවිච්චි වෙනවා.
  • බලන්න 3න් වෙනි ලයින් එක. ඔය ක්‍රියේට් සර්වර් ෆන්ෂන් එක පාවිච්චි කරලා තමයි අපි සර්වර් එක හදන්නේ.
  • ඔය හදන සර්වර් එකට එන ඕනෙම රික්වෙස්ට් එකකට යවන රෙස්පොන්ස් දෙකක් තියනවා.
  • පළවෙනි එක තමා රෙස්පොන්ස් හෙඩර් එක. 5වෙනි ලයින් එක බලන්නකෝ. 
  • දැන් පොඩ්ඩක් අවධානය යොමු කරන්න writeHead ෆන්ෂන් එකට.
  • බලන්න 200 ඉලක්කම. ඔය තියෙන්නෙ රෙස්පොන්ස් කෝඩ් එකක්. අහල නෑ ? එහෙනං දන්නවද 404 Not Found  කියන එක . අන්න හරි ඒ වගේම කෝඩ් එකක් තමා 200ත්.
  • මොකද්ද මේ 200 කියන්නෙ?  මේ කියන්නෙ සරලව කිව්වොත් , "ඔයා සර්වර් එකට  එවපු රික්වෙස්ට් එක හම්බුනා. අපි ඔයා රික්වෙස්ට් එකේ කියපු දේ තේරුම් අරං තියෙන්නෙ. අපි රෙස්පොන්ස් එකක් හදන්න කටයුතු කරමින් ඉන්නවා" කියල දෙයක්.
  • ඕකටම හදන අනිත් එක තමා 201 කියන්නෙ. මේ කියන්නෙ වැඩේ හරි ඔයාට ඕනේ කරන රෙස්පොන්ස් එක හදල කියන එක (උදා: අළුත් HTML පිටුවක්)
  • ස්ටේටස් කෝඩ් ඔක්කොම මෙතනින් බලාගන්න.
  • ඊට පස්සෙ ඔය තියෙන කන්ටෙන්ට් ටයිප් කියන එක මොකද්ද?
  • ඔය තියෙන්නෙ ඔයාට එවන රෙස්පොන්ස් එකේ ෆොර්මැට් එක. 
  • එතකොට 9වෙනි ලයින් එකේ end ෆන්ෂන් එක මොකද්ද කරන්නේ ?
  • මේකෙන් කරන්නේ ඔයාගේ රෙස්පොන්ස් එකේ බොඩි එක නැත්නම් අන්තර්ගතේ හදල බොඩි එක වහල දාන එක.
  • ඒ වගේම 10 වෙනි ලයින් එකෙන් කියන්නෙ ඔයාගේ සර්වර් එක රික්වෙස්ට් ගන්න පාවිච්චි කරන port එක ගැන. මෙතැනදී අපි  8080 තමා පාවිච්චි කළේ. 
  • එතකොට port 80 කියන්නෙ මොකද්ද ? මේ පෝර්ට් එක තමා සම්මත වෙබ් සර්වර් එකක් රික්වෙස්ට් අරගන්න පාවිච්චි කරන පෝර්ට් එක. 
දැන් ඉතිං හදපු සර්වර් එක රන් කරමු...


1 comment:

Bottom Ad [Post Page]

| Designed by Colorlib