Deno JavaScript հարթակը համատեղելի է NPM մոդուլների հետ

Թողարկվել է Deno 1.28-ը, JavaScript և TypeScript հավելվածների sandboxing-ի շրջանակ, որը կարող է օգտագործվել սերվերի կողմից մշակողներ ստեղծելու համար: Պլատֆորմը մշակել է Ռայան Դալը՝ Node.js-ի ստեղծողը։ Node.js-ի նման, Deno-ն օգտագործում է V8 JavaScript շարժիչը, որն օգտագործվում է նաև Chromium-ի վրա հիմնված բրաուզերներում։ Միևնույն ժամանակ, Deno-ն Node.js-ի պատառաքաղ չէ, այլ զրոյից ստեղծված նոր նախագիծ է։ Ծրագրի կոդը բաշխվում է MIT լիցենզիայի ներքո: Կառուցումները պատրաստված են Linux-ի, Windows-ի և macOS-ի համար:

Deno նախագիծը ստեղծվել է օգտվողներին ավելի ապահով միջավայր ապահովելու և Node.js ճարտարապետության կոնցեպտուալ սխալները վերացնելու համար։ Անվտանգությունը բարելավելու համար V8 շարժիչը գրված է Rust-ով, որը խուսափում է շատ խոցելիություններից, որոնք առաջանում են ցածր մակարդակի հիշողության մանիպուլյացիայից: Հարցումները չարգելափակման ռեժիմով մշակելու համար օգտագործվում է Tokio հարթակը, որը գրված է նաև Rust-ով: Tokio-ն թույլ է տալիս ստեղծել բարձր արդյունավետությամբ հավելվածներ՝ հիմնված իրադարձությունների վրա հիմնված ճարտարապետության վրա՝ աջակցելով բազմաշերտ ցանցի հարցումները և մշակելով ասինխրոն ռեժիմում:

Նոր թողարկման հիմնական փոփոխությունը NPM պահոցում տեղակայված փաթեթների հետ համատեղելիության կայունացումն է, որը թույլ է տալիս Deno-ին օգտագործել Node.js հարթակի համար ստեղծված ավելի քան 1.3 միլիոն մոդուլներ։ Օրինակ, Deno-ի վրա հիմնված հավելվածներն այժմ կարող են օգտագործել մշտական ​​տվյալների հասանելիության մոդուլներ, ինչպիսիք են Prisma, Mongoose և MySQL, ինչպես նաև առջևի շրջանակներ, ինչպիսիք են React և Vue: Որոշ NPM մոդուլներ շարունակում են մնալ անհամատեղելի Deno-ի հետ, օրինակ՝ կապված Node.js-ի հատուկ միջավայրի տարրերի հետ, ինչպիսին է package.json ֆայլը: Դեռևս հնարավոր չէ օգտագործել «deno compile» հրամանը NPM մոդուլների հետ։ Ապագա թողարկումները նախատեսում են լուծել այս անհամատեղելիությունները և սահմանափակումները:

Deno-ի նախկինում օգտագործված ECMAScript մոդուլային համակարգի և Web API մոդելի աջակցությունը պահպանվում է նույն մակարդակում, և Deno-ի ծանոթ URL-ի վրա հիմնված բեռնման սխեման օգտագործվում է NPM մոդուլներ ներմուծելու համար: NPM մոդուլներ մուտք գործելու համար կա հատուկ URL նախածանց «npm:», որը կարող է օգտագործվել այնպես, ինչպես սովորական Deno մոդուլները: Օրինակ, NPM մոդուլ ներմուծելու համար կարող եք նշել «import { chalk } from «npm:chalk@5»;», իսկ հրամանի տողից NPM սկրիպտ գործարկելու համար՝ «deno run --allow-env --allow»: -կարդացեք npm:create- vite-extra»:

Deno-ում NPM փաթեթներ օգտագործելը շատ ավելի հեշտ է, քան Node.js-ում, քանի որ կարիք չկա նախապես տեղադրել մոդուլներ (մոդուլները տեղադրվում են հավելվածի առաջին մեկնարկի ժամանակ), չկա package.json ֆայլ և չկա լռելյայն node_modules: գրացուցակում (մոդուլները պահվում են ընդհանուր գրացուցակում, սակայն հնարավոր է վերադարձնել հին վարքը՝ օգտագործելով «--node-modules-dir» տարբերակը):

NPM-ի վրա հիմնված հավելվածները պահպանում են Deno-ի մուտքի վերահսկման, մեկուսացման և անվտանգության նկատմամբ զգայուն առաջադեմ հնարավորություններն օգտագործելու հնարավորությունը: Կասկածելի կախվածությունների միջոցով հարձակումներին հակազդելու համար Deno-ն լռելյայն արգելափակում է կախվածությունից համակարգ մուտք գործելու բոլոր փորձերը և ցուցադրում է նախազգուշացում հայտնաբերված խնդիրների մասին: Օրինակ, երբ մոդուլը փորձում է մուտք գործել /usr/bin/ մուտքագրելու հնարավորություն, կցուցադրվի այս գործողության հաստատման հարցումը. deno run npm:install-malware ⚠️ ┌ Deno-ն խնդրում է մուտք գործել /usr/bin/: ├ Խնդրվել է «install-malware»-ի կողմից ├ Նորից գործարկել --allow-write-ով այս հուշումը շրջանցելու համար: └ Թույլատրե՞լ [y/n] (y = այո, թույլ տալ; n = ոչ, հերքել) >

Նոր տարբերակում ոչ NPM բարելավումները ներառում են V8 շարժիչի թարմացում 10.9-ի թողարկման համար, կողպեքներով ֆայլերի ավտոմատ հայտնաբերում, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() և Deno API-ներ.

Deno-ի հիմնական հատկանիշները.

  • Անվտանգության վրա հիմնված լռելյայն կազմաձևում: Ֆայլերի մուտքը, ցանցային կապը և շրջակա միջավայրի փոփոխականների հասանելիությունը լռելյայն անջատված են և պետք է հստակորեն միացված լինեն: Հավելվածները լռելյայն աշխատում են մեկուսացված sandbox միջավայրերում և չեն կարող մուտք գործել համակարգի հնարավորություններ՝ առանց հստակ թույլտվությունների տրամադրման.
  • Ներկառուցված աջակցություն TypeScript-ին JavaScript-ից դուրս: Տիպի ստուգման և JavaScript-ի ստեղծման համար օգտագործվում է ստանդարտ TypeScript կոմպիլյատորը, որը հանգեցնում է կատարողականի անկման՝ համեմատած JavaScript-ի վերլուծության V8-ում;
  • Runtime-ը գալիս է մեկ ինքնուրույն գործարկվող ֆայլի տեսքով («deno»): Deno-ի միջոցով հավելվածներ գործարկելու համար պարզապես անհրաժեշտ է ներբեռնել մեկ գործարկվող ֆայլ ձեր հարթակի համար՝ մոտ 30 ՄԲ չափով, որը չունի արտաքին կախվածություն և չի պահանջում որևէ հատուկ տեղադրում համակարգում։ Ավելին, deno-ն մոնոլիտ հավելված չէ, այլ Rust crate փաթեթների հավաքածու է (deno_core, rusty_v8), որը կարող է օգտագործվել առանձին;
  • Ծրագիրը սկսելիս, ինչպես նաև մոդուլներ բեռնելիս կարող եք օգտագործել URL հասցեավորումը։ Օրինակ՝ welcome.js ծրագիրը գործարկելու համար կարող եք օգտագործել «deno https://deno.land/std/examples/welcome.js» հրամանը։ Արտաքին ռեսուրսներից ծածկագիրը ներբեռնվում և պահվում է տեղական համակարգում, բայց երբեք ինքնաբերաբար չի թարմացվում (թարմացման համար պահանջվում է հստակորեն գործարկել հավելվածը «--վերբեռնել» դրոշակով);
  • Ծրագրերում HTTP-ի միջոցով ցանցային հարցումների արդյունավետ մշակում, հարթակը նախատեսված է բարձր արդյունավետությամբ ցանցային հավելվածներ ստեղծելու համար.
  • Ունիվերսալ վեբ հավելվածներ ստեղծելու ունակություն, որոնք կարող են իրականացվել ինչպես Deno-ում, այնպես էլ սովորական վեբ բրաուզերում;
  • Մոդուլների ստանդարտ հավաքածուի առկայությունը, որոնց օգտագործումը չի պահանջում արտաքին կախվածությունների հետ կապվածություն: Ստանդարտ հավաքածուի մոդուլները ենթարկվել են լրացուցիչ աուդիտի և համատեղելիության թեստավորման.
  • Բացի գործարկման ժամանակից, Deno պլատֆորմը նաև գործում է որպես փաթեթի կառավարիչ և թույլ է տալիս մուտք գործել մոդուլներ URL-ի միջոցով կոդի ներսում: Օրինակ՝ մոդուլը բեռնելու համար կոդում կարող եք նշել «ներմուծել * որպես տեղեկամատյան «https://deno.land/std/log/mod.ts»–ից։ Արտաքին սերվերներից URL-ի միջոցով ներբեռնված ֆայլերը պահվում են քեշում: Մոդուլի տարբերակներին կապելը որոշվում է URL-ի ներսում տարբերակի համարները նշելով, օրինակ՝ «https://unpkg.com/[էլեկտրոնային փոստով պաշտպանված]/dist/liltest.js";
  • Կառուցվածքը ներառում է կախվածության ստուգման ինտեգրված համակարգ («deno info» հրաման) և կոդի ձևաչափման օգտակար ծրագիր (deno fmt);
  • Ծրագրի բոլոր սցենարները կարող են համակցվել մեկ JavaScript ֆայլի մեջ:

Source: opennet.ru

Добавить комментарий