Lub Deno JavaScript platform yog sib xws nrog NPM modules

Deno 1.28 tau raug tso tawm, lub moj khaum rau sandboxing JavaScript thiab TypeScript daim ntawv thov uas tuaj yeem siv los tsim cov server-sab handlers. Lub platform yog tsim los ntawm Ryan Dahl, tus tsim ntawm Node.js. Zoo li Node.js, Deno siv lub cav V8 JavaScript, uas tseem siv hauv Chromium-based browsers. Nyob rau tib lub sijhawm, Deno tsis yog rab rawg ntawm Node.js, tab sis yog ib txoj haujlwm tshiab tsim los ntawm kos. Txoj haujlwm code raug faib raws li daim ntawv tso cai MIT. Kev tsim yog npaj rau Linux, Windows thiab macOS.

Txoj haujlwm Deno tau tsim los muab cov neeg siv nrog qhov chaw nyab xeeb dua thiab tshem tawm cov tswv yim yuam kev hauv Node.js architecture. Txhawm rau txhim kho kev ruaj ntseg, V8 lub cav tau sau rau hauv Rust, uas zam ntau qhov tsis zoo uas tshwm sim los ntawm kev ua haujlwm qis qis. Txhawm rau ua cov ntawv thov hauv hom tsis thaiv, Tokio platform, kuj tau sau hauv Rust, yog siv. Tokio tso cai rau koj los tsim cov ntawv thov kev ua haujlwm siab raws li kev tshwm sim-tsav architecture, txhawb nqa ntau txoj xov thiab ua cov kev thov hauv network hauv hom asynchronous.

Qhov kev hloov pauv tseem ceeb hauv qhov kev tso tawm tshiab yog kev ruaj khov ntawm kev sib raug zoo nrog cov pob khoom tuav hauv NPM repository, uas tso cai rau Deno siv ntau dua 1.3 lab modules tsim rau Node.js platform. Piv txwv li, Deno-raws li cov ntawv thov tam sim no tuaj yeem siv cov ntaub ntawv txuas mus ntxiv xws li Prisma, Mongoose thiab MySQL, nrog rau cov phiaj xwm pem hauv ntej xws li React thiab Vue. Qee qhov NPM modules tseem nyob tsis sib xws nrog Deno, piv txwv li vim yog kev khi rau Node.js-cov ntsiab lus tshwj xeeb ib puag ncig xws li cov ntaub ntawv package.json. Nws tseem tsis tau muaj peev xwm siv "deno compile" hais kom ua nrog NPM modules. Kev tshaj tawm yav tom ntej npaj los daws cov kev tsis sib haum xeeb thiab kev txwv.

Kev them nyiaj yug rau Deno yav dhau los siv ECMAScript module system thiab Web API qauv yog khaws cia nyob rau tib theem, thiab Deno tus paub URL-raws li cov txheej txheem thauj khoom yog siv los import NPM modules. Txhawm rau nkag mus rau NPM modules, muaj qhov tshwj xeeb URL ua ntej "npm:", uas tuaj yeem siv tib yam li Deno modules niaj hnub. Piv txwv li, txhawm rau import NPM module, koj tuaj yeem hais qhia 'ntshuam { chalk } los ntawm "npm:chalk@5";', thiab khiav NPM tsab ntawv los ntawm kab hais kom ua - "deno run --allow-env --allow -read npm:create-vite-extra."

Siv NPM pob khoom hauv Deno yog qhov yooj yim dua li hauv Node.js, vim tias tsis tas yuav tsum tau nruab cov modules ua ntej (modules tau teeb tsa thaum daim ntawv thov thawj zaug), tsis muaj cov ntaub ntawv package.json, thiab tsis muaj lub neej ntawd node_modules. directory (modules yog cached nyob rau hauv sib qhia directory, tab sis nws muaj peev xwm rov qab tau cov qub cwj pwm siv cov "--node-modules-dir" kev xaiv).

NPM-raws li cov ntawv thov khaws cia lub peev xwm los siv Deno txoj kev tswj xyuas kev nkag, kev cais tawm, thiab kev ruaj ntseg-rhiab heev muaj peev xwm. Txhawm rau tiv thaiv kev tawm tsam los ntawm cov lus nug tsis txaus ntseeg, Deno thaiv los ntawm lub neej ntawd txhua qhov kev sim kom nkag mus rau lub kaw lus los ntawm kev vam khom thiab qhia cov lus ceeb toom txog cov teeb meem pom. Piv txwv li, thaum lub module sim nkag mus rau /usr/bin/, ib daim ntawv thov kev pom zoo rau kev ua haujlwm no yuav tshwm sim: deno run npm:install-malware ⚠️ β”Œ Deno thov sau ntawv nkag mus rau /usr/bin/. β”œ Thov los ntawm 'install-malware' β”œ Khiav dua nrog --allow-sau los hla qhov kev qhia no. β”” Tso cai? [y/n] (y = yes, pub; n = no, deny) >

Tsis yog-NPM kev txhim kho hauv cov ntawv tshiab suav nrog kev hloov kho lub cav V8 tso tawm 10.9, tsis siv neeg tshawb pom cov ntaub ntawv nrog cov xauv, ruaj khov ntawm Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() thiab Deno APIs.

Cov yam ntxwv tseem ceeb ntawm Deno:

  • Kev ruaj ntseg-oriented default configuration. Kev nkag mus rau cov ntaub ntawv, kev sib txuas lus, thiab kev nkag mus rau ib puag ncig hloov pauv tau raug cuam tshuam los ntawm lub neej ntawd thiab yuav tsum tau qhib kom meej. Cov ntawv thov los ntawm lub neej ntawd khiav hauv ib puag ncig sandbox sib cais thiab tsis tuaj yeem nkag mus rau hauv lub peev xwm yam tsis tau tso cai meej meej;
  • Ua-nyob rau hauv kev them nyiaj yug rau TypeScript dhau JavaScript. Rau hom kev kuaj xyuas thiab JavaScript tiam, tus qauv TypeScript compiler yog siv, uas ua rau poob qis hauv kev ua haujlwm piv rau JavaScript parsing hauv V8;
  • Runtime tuaj nyob rau hauv daim ntawv ntawm ib tus kheej-muaj cov ntaub ntawv executable ("deno"). Txhawm rau khiav cov ntawv thov siv Deno, koj tsuas yog yuav tsum rub tawm ib daim ntawv ua tiav rau koj lub platform, txog 30 MB hauv qhov loj, uas tsis muaj kev cuam tshuam sab nraud thiab tsis tas yuav muaj kev teeb tsa tshwj xeeb ntawm lub kaw lus. Ntxiv mus, deno tsis yog ib daim ntawv thov monolithic, tab sis yog ib phau ntawm Rust crate pob (deno_core, rusty_v8), uas tuaj yeem siv sib cais;
  • Thaum pib qhov kev pab cuam, nrog rau kev thauj khoom modules, koj tuaj yeem siv qhov chaw nyob URL. Piv txwv li, txhawm rau khiav qhov kev pabcuam welcome.js, koj tuaj yeem siv cov lus txib "deno https://deno.land/std/examples/welcome.js". Code los ntawm lwm cov kev pab cuam yog rub tawm thiab cached ntawm lub hauv paus system, tab sis yeej tsis tau hloov kho tshiab (hloov tshiab yuav tsum tau khiav cov ntawv thov nrog tus chij "--reload");
  • Kev ua haujlwm tau zoo ntawm kev thov kev sib txuas lus ntawm HTTP hauv cov ntawv thov; lub platform yog tsim los tsim cov ntawv thov kev ua haujlwm siab;
  • Lub peev xwm los tsim kev siv lub vev xaib thoob ntiaj teb uas tuaj yeem ua tiav ob qho tib si hauv Deno thiab hauv lub vev xaib tsis tu ncua;
  • Lub xub ntiag ntawm cov txheej txheem txheej txheem ntawm modules, kev siv uas tsis tas yuav khi rau sab nraud dependencies. Modules los ntawm cov qauv sau tau dhau los soj ntsuam ntxiv thiab ntsuas kev sib raug zoo;
  • Ntxiv rau lub sijhawm ua haujlwm, Deno platform kuj tseem ua tus tswj hwm pob thiab tso cai rau koj nkag mus rau cov modules los ntawm URL hauv code. Piv txwv li, txhawm rau thauj khoom ib qho module, koj tuaj yeem teev nyob rau hauv cov cai "ntshuam * raws li teev los ntawm "https://deno.land/std/log/mod.ts". Cov ntaub ntawv rub tawm los ntawm cov servers sab nraud ntawm URL yog cached. Kev khi rau cov qauv qauv yog txiav txim siab los ntawm kev qhia tus lej version hauv URL, piv txwv li, β€œhttps://unpkg.com/[email tiv thaiv]/dist/lilttest.js";
  • Cov qauv muaj xws li kev tshuaj ntsuam xyuas kev sib koom ua ke (qhov "deno info" hais kom ua) thiab kev siv hluav taws xob rau kev ua lej code (deno fmt);
  • Txhua daim ntawv thov ntawv tuaj yeem muab tso ua ke rau hauv ib daim ntawv JavaScript.

Tau qhov twg los: opennet.ru

Ntxiv ib saib