Node.js හි කතුවරයා ආරක්ෂිත JavaScript වේදිකාව Deno 1.0 ඉදිරිපත් කළේය

වසර දෙකක සංවර්ධනයෙන් පසුව ඉදිරිපත් කරන ලදී පළමු ප්රධාන නිකුතුව ඩෙනෝ 1.0, ජාවාස්ක්‍රිප්ට් සහ ටයිප්ස්ක්‍රිප්ට් හි යෙදුම් තනිවම ක්‍රියාත්මක කිරීම සඳහා වේදිකාවක්, එය සේවාදායකයේ ක්‍රියාත්මක වන හසුරුවන්න සෑදීමට භාවිතා කළ හැකිය. වේදිකාව රයන් ඩාල් විසින් සංවර්ධනය කරන ලදී (රයන් ඩාල්), Node.js හි නිර්මාතෘ. Node.js මෙන්, Deno JavaScript එන්ජිමක් භාවිතා කරයි V8, එය Chromium මත පදනම් වූ බ්‍රව්සර්වල ද භාවිතා වේ. ඒ අතරම, Deno යනු Node.js හි දෙබලක නොවේ, නමුත් එය මුල සිටම නිර්මාණය කරන ලද නව ව්‍යාපෘතියකි. ව්යාපෘති කේතය විසින් බෙදා හරිනු ලැබේ MIT බලපත්‍රය යටතේ. එකලස්කිරීම් සකස් කර ඇත Linux, Windows සහ macOS සඳහා.

සැලකිය යුතු අනුවාද අංකය ඩෙනෝ නාම අවකාශයේ API ස්ථායීකරණය සමඟ සම්බන්ධ වී ඇති අතර ඒවා OS සමඟ යෙදුම්වල අන්තර්ක්‍රියා සඳහා වගකිව යුතුය. මෙතෙක් පැවති මෘදුකාංග අතුරුමුහුණත් ස්ථාවර නොවේ, පෙරනිමියෙන් සඟවා ඇති අතර "--අස්ථායී" ආකාරයෙන් ධාවනය වන විට පමණක් ලබා ගත හැක. නව අනුවාදයන් සාදනු ලබන විට, එවැනි API ක්‍රමයෙන් ස්ථාවර වනු ඇත. setTimeout() සහ fetch() වැනි පොදු කාර්යයන් ඇතුලත් ගෝලීය නාම අවකාශයේ API සාම්ප්‍රදායික වෙබ් බ්‍රව්සර් වල API වලට හැකි තරම් සමීප වන අතර බ්‍රව්සර් සඳහා වන වෙබ් ප්‍රමිතීන්ට අනුකූලව සංවර්ධනය කර ඇත. රස්ට් විසින් සපයනු ලබන API, වේදිකා කේතයේ සෘජුවම භාවිතා වන අතර, Deno ධාවන කාලය සඳහා ප්ලගීන සංවර්ධනය කිරීමේ අතුරුමුහුණත, තවමත් ස්ථායී කර නොමැති අතර දිගටම සංවර්ධනය වෙමින් පවතී.

නව ජාවාස්ක්‍රිප්ට් වේදිකාවක් නිර්මාණය කිරීමේ ප්‍රධාන අභිප්‍රාය වූයේ සංකල්පීය දෝෂ ඉවත් කිරීමට ඇති ආශාවයි. පිළිගත්තා Node.js ගෘහ නිර්මාණ ශිල්පය තුළ, සහ පරිශීලකයින්ට වඩාත් ආරක්ෂිත පරිසරයක් ලබා දෙයි. ආරක්ෂාව වැඩි දියුණු කිරීම සඳහා, V8 එන්ජිම රස්ට් වලින් ලියා ඇති අතර, නිදහස් පසු ප්‍රවේශය, null pointer dereferences සහ buffer overruns වැනි පහත් මට්ටමේ මතක උපාමාරු වලින් පැන නගින බොහෝ දුර්වලතා මග හැරේ. අවහිර නොවන ආකාරයෙන් ඉල්ලීම් සැකසීමට වේදිකාව භාවිතා කරයි ටෝකියෝව, මලකඩ වලින් ද ලියා ඇත. Tokio ඔබට සිදුවීම් මත පදනම් වූ ගෘහ නිර්මාණ ශිල්පය මත පදනම්ව ඉහළ කාර්ය සාධන යෙදුම් නිර්මාණය කිරීමට ඉඩ සලසයි, අසමමුහුර්ත ආකාරයෙන් බහු-නූල් කිරීම සහ ජාල ඉල්ලීම් සැකසීමට සහාය වේ.

ප්රධාන විශේෂතා ඩෙනෝ:

  • ආරක්ෂක-නැඹුරු පෙරනිමි වින්‍යාසය. ගොනු ප්‍රවේශය, ජාලකරණය සහ පරිසර විචල්‍යයන් වෙත ප්‍රවේශය පෙරනිමියෙන් අක්‍රිය කර ඇති අතර ඒවා පැහැදිලිව සක්‍රීය කළ යුතුය. යෙදුම් පෙරනිමියෙන් හුදකලා වැලිපිල්ල පරිසරයන් තුළ ධාවනය වන අතර පැහැදිලි අවසර ලබා නොදී පද්ධති හැකියාවන් වෙත ප්‍රවේශ විය නොහැක;
  • ජාවාස්ක්‍රිප්ට් වලින් ඔබ්බට ටයිප්ස්ක්‍රිප්ට් සඳහා සහය. සම්මත ටයිප්ස්ක්‍රිප්ට් සම්පාදකය වර්ග පරීක්ෂා කිරීමට සහ ජාවාස්ක්‍රිප්ට් ජනනය කිරීමට භාවිතා කරයි, එය V8 හි ජාවාස්ක්‍රිප්ට් විග්‍රහ කිරීම හා සසඳන විට කාර්ය සාධන පහරකට තුඩු දෙයි. අනාගතයේ දී, අපි TypeScript ආකාරයේ පිරික්සුම් පද්ධතියක් අපගේම ක්‍රියාත්මක කිරීමක් සූදානම් කිරීමට සැලසුම් කරමු, එමඟින් TypeScript සැකසුම් කාර්ය සාධනය විශාලත්වයේ අනුපිළිවෙලකින් වැඩිදියුණු කරනු ඇත;
  • ධාවන කාලය තනි ස්වයං අන්තර්ගත ක්‍රියාත්මක කළ හැකි ගොනුවක ("ඩෙනෝ") ආකාරයෙන් පැමිණේ. Deno භාවිතයෙන් යෙදුම් ධාවනය කිරීමට එය ප්‍රමාණවත් වේ උඩුගත කරන්න එහි වේදිකාව සඳහා එක් ක්‍රියාත්මක කළ හැකි ගොනුවක් ඇත, ප්‍රමාණය 20 MB පමණ වන අතර, එය බාහිර පරායත්තතා නොමැති අතර පද්ධතිය මත විශේෂ ස්ථාපනයක් අවශ්‍ය නොවේ. එපමනක් නොව, deno යනු මොනොලිතික් යෙදුමක් නොව, රස්ට් හි කූඩ පැකේජ එකතුවකි (deno_core, මලකඩ_v8), වෙන වෙනම භාවිතා කළ හැකි;
  • වැඩසටහන ආරම්භ කිරීමේදී මෙන්ම මොඩියුල පැටවීමේදී, ඔබට URL ලිපිනය භාවිතා කළ හැකිය. උදාහරණයක් ලෙස, welcome.js වැඩසටහන ක්‍රියාත්මක කිරීම සඳහා, ඔබට “deno https://deno.land/std/examples/welcome.js” විධානය භාවිතා කළ හැකිය. බාහිර සම්පත් වලින් කේතය බාගත කර දේශීය පද්ධතියට හැඹිලිගත කර ඇත, නමුත් කිසි විටෙකත් ස්වයංක්‍රීයව යාවත්කාලීන නොවේ (යාවත්කාලීන කිරීම සඳහා “--reload” ධජය සමඟ යෙදුම පැහැදිලිව ක්‍රියාත්මක කිරීම අවශ්‍ය වේ);
  • යෙදුම්වල HTTP හරහා ජාල ඉල්ලීම් කාර්යක්ෂමව සැකසීම; වේදිකාව නිර්මාණය කර ඇත්තේ ඉහළ කාර්ය සාධන ජාල යෙදුම් නිර්මාණය කිරීම සඳහාය;
  • Deno සහ සාමාන්‍ය වෙබ් බ්‍රව්සරය තුළ ක්‍රියාත්මක කළ හැකි විශ්වීය වෙබ් යෙදුම් නිර්මාණය කිරීමේ හැකියාව;
  • ලබා ගත හැකි සම්මත මොඩියුල කට්ටලය, එය භාවිතා කිරීම බාහිර යැපීම් වලට බැඳීමක් අවශ්ය නොවේ. සම්මත එකතුවෙන් ඇති මොඩියුල අතිරේක විගණනය සහ අනුකූලතා පරීක්ෂණයට භාජනය වී ඇත;
  • ධාවන කාලයට අමතරව, Deno වේදිකාව පැකේජ කළමනාකරු ලෙසද ක්‍රියා කරන අතර කේතය තුළ ඇති URL මගින් මොඩියුල වෙත ප්‍රවේශ වීමට ඔබට ඉඩ සලසයි. උදාහරණයක් ලෙස, මොඩියුලයක් පූරණය කිරීම සඳහා, ඔබට "https://deno.land/std/log/mod.ts" වෙතින් ලොග් ලෙස "ආයාත කරන්න * කේතයෙහි සඳහන් කළ හැක. URL හරහා බාහිර සේවාදායකයන්ගෙන් බාගත කළ ගොනු හැඹිලිගත කර ඇත. මොඩියුල අනුවාදවලට බැඳීම තීරණය වන්නේ URL එක තුළ අනුවාද අංක සඳහන් කිරීමෙනි, උදාහරණයක් ලෙස, “https://unpkg.com/[විද්‍යුත් ආරක්‍ෂිත]/dist/liltest.js";
  • ව්‍යුහයට ඒකාබද්ධ පරායත්ත පරීක්ෂණ පද්ධතියක් (“deno info” විධානය) සහ කේත හැඩතල ගැන්වීම සඳහා උපයෝගීතාවයක් (deno fmt) ඇතුළත් වේ;
  • සියලුම යෙදුම් ස්ක්‍රිප්ට් එක JavaScript ගොනුවකට ඒකාබද්ධ කළ හැක.

Node.js වෙතින් වෙනස්කම්:

  • Deno npm පැකේජ කළමනාකරු භාවිතා නොකරයි
    සහ ගබඩාවලට බැඳී නැත, මොඩියුල URL එකක් හරහා හෝ ගොනු මාර්ගයක් මගින් ආමන්ත්‍රණය කරනු ලබන අතර, මොඩියුලම ඕනෑම වෙබ් අඩවියක තැබිය හැක;
  • මොඩියුල නිර්වචනය කිරීමට Deno "package.json" භාවිතා නොකරයි;
  • API වෙනස, Deno හි සියලුම අසමමුහුර්ත ක්‍රියා පොරොන්දුවක් ලබා දෙයි;
  • Deno හට ගොනු, ජාල සහ පරිසර විචල්‍යයන් සඳහා අවශ්‍ය සියලුම අවසරයන් පිළිබඳ පැහැදිලි අර්ථ දැක්වීමක් අවශ්‍ය වේ;
  • හසුරුවන්නන් සමඟ සපයා නොමැති සියලුම දෝෂයන් යෙදුම අවසන් කිරීමට හේතු වේ;
  • Deno ECMAScript මොඩියුල පද්ධතිය භාවිතා කරන අතර අවශ්‍ය();
  • Deno හි ඇති HTTP සේවාදායකය TypeScript වලින් ලියා ඇති අතර දේශීය TCP සොකට් මත ධාවනය වන අතර Node.js HTTP සේවාදායකය C වලින් ලියා ඇති අතර JavaScript සඳහා බන්ධන සපයයි. Deno හි සංවර්ධකයින් සමස්ත TCP සොකට් ස්ථරය ප්‍රශස්ත කිරීම සහ වඩාත් සාමාන්‍ය අතුරු මුහුණතක් සැපයීම කෙරෙහි අවධානය යොමු කර ඇත. Deno HTTP සේවාදායකය අඩු ප්‍රතිදානයක් සපයන නමුත් පුරෝකථනය කළ හැකි අඩු ප්‍රමාදයක් සහතික කරයි. උදාහරණයක් ලෙස, පරීක්ෂණයේදී, Deno HTTP සේවාදායකය මත පදනම් වූ සරල යෙදුමක් මිලි තත්පර 25 ක උපරිම ප්‍රමාදයකින් තත්පරයකට ඉල්ලීම් 1.3 ක් සැකසීමට සමත් විය. Node.js හි, සමාන යෙදුමක් තත්පරයකට ඉල්ලීම් 34 දහසක් ක්‍රියාවට නැංවූ නමුත් ප්‍රමාදයන් මිලි තත්පර 2 සිට 300 දක්වා පරාසයක පවතී.
  • Deno Node.js (NPM) සඳහා පැකේජ සමඟ නොගැළපේ, නමුත් වෙන වෙනම සංවර්ධනය වෙමින් පවතී අන්තර් ස්ථරය සම්මත Node.js පුස්තකාලය සමඟ ගැළපීම සඳහා, එය වර්ධනය වන විට, Node.js සඳහා ලියා ඇති යෙදුම් වැඩි වැඩියෙන් Deno තුළ ධාවනය කිරීමට හැකි වනු ඇත.
  • මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න