Full width home advertisement

Post Page Advertisement [Top]



කාලෙකට පස්සේ ආයෙමත් nodejs ලිපි පෙළ පටන් ගන්න හිතුන. අද මම කතා කරන්න හිතාගෙන ඉන්නෙ අපි හැමෝම දන්න ෆයිල් අප්ලෝඩින් ගැන. හැබැයි මම අද ටිකක් වෙනස් විදියට තමා මේක කරන්නේ. මතකයි නෙ මම කලින් වතාවකදී කිව්ව NPM නැත්නම් නෝඩ් පැකේජ් මැනේජර් එක ගැන. මම අද NPM එකෙන් ලබාදෙන ප්‍රසිද්ද මිඩ්ල්වෙයා එකක් වෙන මල්ටර් (MULTER) මිඩ්ල් වෙයා එක පාවිච්චි කරලා ෆයිල් අප්ලෝඩින් වැඩේ කරන්න තමා හදන්නෙ.

මොකද්ද මේ මට්ලර් කියන්නේ?
මට්ලර් කියන්නෙ මල්ටිපාර්ට් ෆෝම් ඩේටා එක්ක ගනුදෙනු කරන්න පුළුවන් මිඩ්ල් වෙයා එකකට. හරි දැන් මම මේ ගැන කියල දෙන්නම්. අපි මට්ලර් වලට යන්න කලින් බලමු මොකක්ද මේ මල්ටි පාට් ෆෝම් ඩේට වගේම මොකද්ද මේ මිඩ්ල් වේයා එකක් කියල කියන්නෙ කියල.

මිඩ්ල් වෙයා එකක් කියන්නෙ සොෆ්ට්වෙයා එකක්. හැබැයි මේක ටිකක් විශේෂයි. බලන්නකෝ පහල තියෙන පින්තුරේ.

හැමවෙලාවෙම මිඩ්ල් වෙයා එකක් ජිවත් වෙන්නේ ඇප්ලිකේෂන් එකකුයි ගොඩක් හාඩ්වෙයා පැත්තට බර ලෝ ලෙවල් තැනක් අතරෙ.ගොඩක් දුරට නෙට්වර්ක් එකක් සහ ඇප්ලිකේෂන් එකක් අතරෙ දත්ත හුවමාරු වෙන්නේ මිඩ්ල් වෙයා එකක් හරහා.වචන වලින් කියනවට ලේසියි බලන්නකෝ පින්තුරේ දිහා. එතකොට මොනවද මේ මල්ටි පාර්ට් ෆෝම් ඩේටා කියන්නෙ?
අපි ෆෝම් එකක් හරහා POST ඩේටා සර්වර් එකට යවද්දී රික්වෙස්ට් බොඩි එකේ තියෙන ඩේටා encode කරන්න ඕනි. මේ වැඩේට පාවිච්චි වෙන ක්‍රම තුනක් තියෙනව.


  • application/x-www-form-urlencoded (මේක තමා ගොඩක් දුරට පාවිච්චි වෙන්නෙ)
  • multipart/form-data
  • text/plain

මෙන්න මේ ඔයාලගේ ෆෝම් එක  <input type="file"> කියන ටැග් එක පාවිච්චි වෙනව නං අදාළ ෆෝම් එකේ ඩේටා සර්වර් එකට යවන්න ඕනෙ මල්ටි පාර්ට් ෆෝම් ඩේටා එකක් විදියට. ඒ කියන්නෙ ෆයිල් එකක වගේ තියෙන කන්ටෙන්ට් එකක් යැවෙන්නේ බයිනරි ඩේටා එකක් විදියට. සරලව කිව්වොත් POST රික්වෙස්ට් එකක් හරහා බයිනරි ඩේටා යවන්න පාවිච්චි වෙන එන්කෝඩ් ටයිප් එක තමා මල්ටි පාර්ට් ෆෝම් ඩේටා කියන්නෙ...

Value
application/x-www-form-urlencodedහැම කැරැක්ටර් එකක් ම ෆෝම් ඩේටා සබ්මිට් වෙන්න කලින්  එන්කෝඩ් වෙනව. හිස් තැන් කන්වර්ට් වෙනව + ලකුණු විදියට. අනිත් සේරම සංඛේත විශේෂ කැරැක්ටර් සේරම ASCII දාසයේ පාදයට කන්වර්ට් වෙනව.
multipart/form-dataකිසිම කැරැක්ටර් එකක් එන්කෝඩ් වෙන්නේ නැහැ. ෆයිල් අප්ලෝඩ් වැඩ කරද්දී පාවිච්චි වෙනව.
text/plainමේ ක්‍රමේදීත් හිස්තැන් + සංඛේත විදියට කන්වර්ට් වෙනවා. එහෙම උනත් කිසිම විශේෂ කැරැක්ටර් එන්කෝඩ් වීමක් සිද්ද වෙන්නේ නැහැ.

 මොකක්ද මේ EXPRESS JS 
එස්පර්ස් එක්ස්ප්‍රස් කියන්නේ බොහොම ප්‍රසිද්ද වෙබ් ඇප්ලිකේෂන් ෆ්‍රේම්වර්ක් එකක්. MVC කියන අර්කිටෙක්චර් එක ඔයාලට සමීප ඇති. මෙන්න මේ MVC වල පාවිච්චි වෙන විදියට තමා අපි අපේ කෝඩ් එක එක්ස්ප්‍රස් වලදී හදන්නෙ/පෙළගස්වන්නේ. nodejs කිව්වොත් ඊළඟටම කියවෙන වචනය වෙලා තියෙන්නේ express. ඒ තරමටම මේ එක්ස්ප්‍රස් ප්‍රසිද්ද ෆ්‍රේම්වර්ක් එකක්. එක්ස්ප්‍රස් JS වෙනම ලිපි පෙළක් විදියට ලබන සතියේ ඉඳන් කරන්න බලාපොරොත්තු වෙනවා. ඒක නිසා අද පුංචි හැඳින්වීමක් දෙන්නත් එක්කම තමා මට්ලර් එක්ක එකස්ප්‍රස් ගාවගන්න හිතුවෙත්.
එක්ස්ප්‍රස් ගැන කියද්දී ඊළඟට එන වචනේ තමා මිඩ්ල් වෙයා කියන එක. එක්ස්ප්‍රස් - මිඩ්ල් වෙයා මේ දෙන්නා බොහොම තදින් බැඳිච්ච දෙන්න්නෙක්. එකස්ප්‍රස් වලටම හදපු මිඩ්ල් වෙයා විශාල ප්‍රමාණයක් තියෙනවා නෝඩ් පැකේජ් මැනේජර් එක ඇතුලේ.
පුංචි උදාහරණයක් ගන්නම් කො. හිතන්න මේ ලිපිය කියවන ඔයා හිතනවා පුංචි ඩයිනමික් වෙබ්සයිට් එකක් හදන්න. ඉතිං මේ සයිට් එක හදාගෙන යද්දී ඔයාට අවශ්‍යතාවක් එනවා මේ වෙබ්සයිට් එකට එන හැම රික්වෙස්ට් එකක් ම ලොග් එකකට රයිට් වෙන විදියට හදන්න. මොකද ඔයා බලාපොරොත්තු වෙනවා අනවශ්‍යය ප්‍රමාණයට වඩා වැඩියෙන් එන රික්වෙස්ට් ෆිල්ටර් කරන්න.  මෙන්න මේ වැඩේට ඔයාට පුළුවන් මෝගන් කියන මිඩ්ල් වෙයා එක පාවිච්චි කරන්න. හිතන්න මේ සයිට් එකේ පේමන්ට් ගේට්වේ එකක් තියෙනව කියල. ඉතිං ඔයාට සිද්ද වෙනව
 අපේ සයිට් එක බලන කෙනයි අපේ සර්වර් එකයි අතරෙ ආරක්ෂිත සම්බන්දයක් හදන්න. ඉතින් මේ වැඩේදී  දැනට තියෙන HTTP ප්‍රොටෝකෝල් එක HTTPS වලට වෙනස් කරන්න සිද්ද වෙනවා (SSL වලට සපෝර්ට් කරන විදියට ). මේ වැඩේට ඔයාට පාවිච්චි කරන්න පුළුවන් HTTPS මිඩ්ල් වෙයා එක. දැන් ඔයාගේ සයිට් එක මුලික වශයෙන් ආරක්ෂාව අතින් හොඳයි. ඒත් ඔයාට සිද්ද වෙනවා වෙබ් සයිට් එකකට බහුලව එන ආරක්ෂාව සම්බන්ද ප්‍රශ්න වලට මුහුණ දෙන්න. සරලව කිව්වොත් වෙබ් සයිට් එකකට නිතරම එන අටෑක් වලින් සුරක්ෂිත වෙන්න. මේ වැඩේට පුළුවන් හෙල්මට් මොඩියුල්  එක පාවිච්චි කරන්න. හෙල්මට් කියන්නෙ මොඩියුල් එකක් , එහෙමත් නැත්නම් මිඩ්ල් වෙයා 9ක එකතුවක්. මේ මිඩ්ල් වෙයා 9ම ආරක්ෂාව වැඩි කරන්න හදපු ඒවා ටිකක්.
මේ ගැන ඉදිරියේදී වැඩි විස්තර කතා කරන්නම්. පහලින් තියෙන්නේ Express  ලිපි මාලාව යටතේ කතා කරන්න බලාපොරොත්තු වෙන මාතෘකා.

  • මිඩ්ල්වෙයා ස්ටැක් ගැන 
  • රවුටින් 
  • ටෙම්ප්ලේට් එන්ජින් ගැන (EJS PUG)
  • ඩේටා බේස් (ORM ගැන විශේෂයෙන්)
  • REST API හදන හැටි
  • සිකියුරිටි පැත්ත ගැන
  • ටෙස්ටින් (Mocha Chai )


දැන් අපි බලමු මට්ලර් පාවිච්චි කරල පොඩි ෆයිල් එකක් අප්ලෝඩ් කරල. මේ වැඩේ එච්චර අමාරු නෑ. පොඩි ස්ක්‍රිප්ට් එකක් තියෙන්නෙ. මුලින්ම අපි පැකේජ් එකක් විදිහට මේ ස්ක්‍රිප්ට් එක හදමු. බලන්නකො පහළ පින්තුරේ.





ඔයාලගේ ටර්මිනල් එකේ ටයිප් කරන්න npm init කියල. මේ කමාන්ඩ් එකෙන් අපි නෝඩ් පැකේජ් මැනේජර් එක පාවිච්චි කරලා packag.json කියන ෆයිල් එක හදන්න යන්නෙ. එතකොට මොකක්ද මේ package.json ?
මේ ෆයිල් එක ජිවත් වෙන්නෙ ඔයාලගේ ප්‍රොජෙක්ට් රූට් එකේ. මේ ෆයිල් එක ඇතුලේ අපේ ප්‍රොජෙක්ට් එක මොකක්ද කියන එක ගැන විස්තර වගේම අපේ ප්‍රොජෙක්ට් එකට පාවිච්චි කරපු ඩිපෙන්ඩන්සි ලිස්ට් එක තියෙනව. ඩිපෙන්ඩන්සි කියන්නෙ අපි NPM එක හරහා ගන්න මට්ලර් වගේ මොඩියුල් වලට. ඩිපෙන්ඩන්සි වලත් තියෙනව ඩිවලොප්මන්ට් ඩිපෙන්ඩන්සි නැත්නං ඩිව් ඩිපෙන්ඩන්සි කියල වර්ගයක්. ඩිව් ඩිපෙන්ඩන්සි පාවිච්චි වෙන්නේ ප්‍රොජෙක්ට් එක ඩිවලොප් කරනකන් විතරයි. උදාහරණයක් විදිහට ටෙස්ට් සර්වර් එකක් ගන්න පුළුවන්. මේ වගේම තව ඩිපෙන්ඩන්සි ජාතියක් තියෙනව ඔප්ෂනල් ඩිපෙන්ඩන්සි කියලත්. package.json ෆයිල් එකේ තියෙන ඩේටා වලට පොදුවේ කියන්නෙ ප්‍රොජෙක්ට් මෙටා ඩේටා කියල.



දැන් මේ විදිහට ටර්මිනල් එකේ ඔයාලගේ ප්‍රොජෙක්ට් එක ගැන විස්තර ඇතුල් කරන්න. දැනට ප්‍රොජෙක්ට් එකට උවමනා කරන දේවල් ටික විතරයි දාල තියෙන්නෙ. 

දැන් බලන්නකො හැදුනු package.json ෆයිල් එක දිහා. ඔතන නිල් පාටින් හයිලයිට් කරපු ටික scripts කියන ප්‍රොපටි එකට දාන්න. ඔය node index,js කියන්නෙ කමාන්ඩ් එකක්. මේක ප්‍රොජෙක්ට් එක රන් කරන හැමවෙලාවෙම ටයිප් කරන්න ඕනෙ නිසා තමයි ඔතනට දැම්මේ. මෙහෙම කලාම ඔයාල ප්‍රොජෙක්ට් එක රන් කරන වෙලාවට npm start  කියන කමාන්ඩ් එක දුන්නහම ඇති. ඔයාලට මං මේ කියන දේ තේරෙයි ප්‍රොජෙක්ට් එක රන් කරද්දී ටර්මිනල් වින්ඩෝ එක දිහා බලන් හිටියෝතින්. මේ scripts කියන කොටසෙන් සෑහෙන ප්‍රයෝජනයක් ගන්න පුළුවන්. ඉදිරියේදී ඒ ගැන සාකච්චා කරන්නම්.

හරි එහෙනං දැන් ඩිපෙන්ඩන්සි ටික npm එක පාවිච්චි කරල අරගමු. මේ වැඩේට එක්ස්ප්‍රස් සහ මට්ලර් අපිට අවශ්‍ය වෙනව. එහෙනං ඒ දෙන්නව මුලින් අරගනිමු.


බලන්න --save කියන තැන. මේ --save කියන්නෙ ඔප්ෂන් එකක්. මේකෙන් වෙන්නේ අපිට උවමනා කරන ඩිපෙන්ඩන්සි ටික ඩවුන්ලෝඩ් උනාට පස්සෙ package.json කියන මෙටා ඩේටා ෆයිල් එක අප්ඩේට් වෙන එක. පහල පින්තුරේ වම්පැත්තෙ නෝඩ් මොඩියුල් ෆෝල්ඩර් එක වගේම අලුතින් එකතු වුනු ඩිපෙන්ඩන්සිස් කියන ප්රෝපර්ටි එකත් බලන්නකො.



හරි දැන් අපි හදන  මොඩියුල් එකේ 50% ක් වැඩ ඉවරයි. ඊළඟට හදමු අප්ලෝඩ් කරන්න පාවිච්චි කරන html ෆෝම් එක. මේ ෆයිල් එක තමා index,html කියල කියන්නෙ.



මේ තියෙන්නෙ ඔය ලිව්ව html කෝඩ් එකේ අවුට් පුට් එක.


හරි දැන් හදමු එක්ස්ප්‍රස් ස්ක්‍රිප්ට් එක. බලන්නකෝ පහල පින්තූරේ.




  • පළවෙනියටම කරල තියෙන්නේ අපි ඩිපෙන්ඩන්සි එකක් විදියට ගත්ත එක්ස්ප්‍රස් සහ මට්ලර් අපේ ස්ක්‍රිප්ට් එකට ඉම්පෝට් කරන එක. 
  • හතර වෙනි ලයින් එක බලන්න කො. එකස්ප්‍රස් මොඩියුල් එක එක පාරක් ඉම්පෝර්ට් කරල අපිට පෝට් කිහිපයක දුවන වෙනස් විදිහේ ඇප් කිහිපයක් උනත් හදන්න පුළුවන්.
    const ex = require('express');
    let app_1 = express();
    let app_2 = express();
  • බලන්න 6 වෙනි ලයින් එක. ඩිස්ක් ස්ටෝරේජ් එන්ජින් එක පාවිච්චි කරලා  අපි අප්ලෝඩ් කරන ෆයිල් එක අපිට ඕනෙ විදිහට සේව් වෙන එක පාලනය කරන්න පුළුවන්. මෙතැනදී ඔප්ෂන් දෙකක් ගන්නවා. පලවෙනි එක ෆයිල් එක සේව් වෙන්න ඕනෙ තැනයි , දෙවෙනි එක ෆයිල් නේම් එකයි. ෆයිල් එක සේව් වෙන්නේ uploads කියන ෆෝල්ඩර් එකට. ඒ වගේම ෆයිල් නේම් එක ෆයිල් එක අප්ලෝඩ් කරන මොහොතේ ඩේට් එක මිලිතත්පර වලින් සඳහන් කලාම එන විදිහට තමා සේව් වෙන්නෙ. 
  • 18 වෙනි ලයින් එකේ .single මෙතඩ් එක පාවිච්චි කරල තියෙන්නේ තනි ෆයිල් එකක් අප්ලෝඩ් කරන නිසාවෙන්. 'file_name' කියන්නෙ කලින් හදපු HTML ෆෝම් එකේ ෆයිල් ඉන්පුට් එකේ නම. මේක ෆයිල් ඉන්පුට් එකේ නම වරද්දගන්නේ නැතිව දෙන්න.



  • බලන්නකෝ 21 වෙනි ලයින් එක. මෙතනින් වෙන්නේ අපි හදපු HTML ෆෝම් එක සර්වර් එකෙන් ක්ලයන්ට් ට යවන එක. 
  • 24 වෙනි ලයින් එකෙන් වෙන්නේ අපි ෆෝම් එක සබ්මිට් කලාම ෆයිල් එක අප්ලෝඩ් වෙන එක.
  • 33 වෙනි ලයින් එකෙන් තමා අපේ සර්වර් එක රික්වෙස්ට් රෙස්පොන්ස් ගන්න පාවිච්චි කරන පෝට් එක සෙට් කරල තියෙන්නේ.


No comments:

Post a Comment

Bottom Ad [Post Page]

| Designed by Colorlib