Syeed Deno JavaScript jẹ ibaramu pẹlu awọn modulu NPM

Deno 1.28 ti tu silẹ, ilana fun sandboxing JavaScript ati awọn ohun elo TypeScript ti o le ṣee lo lati ṣẹda awọn olutọju ẹgbẹ olupin. Syeed jẹ idagbasoke nipasẹ Ryan Dahl, ẹlẹda ti Node.js. Bii Node.js, Deno nlo ẹrọ V8 JavaScript, eyiti o tun lo ninu awọn aṣawakiri orisun-Chromium. Ni akoko kanna, Deno kii ṣe orita ti Node.js, ṣugbọn jẹ iṣẹ akanṣe tuntun ti a ṣẹda lati ibere. Koodu ise agbese ti pin labẹ iwe-aṣẹ MIT. Awọn ile ti pese sile fun Linux, Windows ati macOS.

A ṣẹda iṣẹ akanṣe Deno lati pese awọn olumulo pẹlu agbegbe to ni aabo diẹ sii ati imukuro awọn aṣiṣe ero inu Node.js faaji. Lati mu aabo dara sii, ẹrọ V8 ti kọ ni Rust, eyiti o yago fun ọpọlọpọ awọn ailagbara ti o dide lati ifọwọyi iranti ipele kekere. Lati ṣe ilana awọn ibeere ni ipo ti kii ṣe idinamọ, pẹpẹ Tokio, ti a tun kọ ni Rust, ti lo. Tokio ngbanilaaye lati ṣẹda awọn ohun elo iṣẹ ṣiṣe giga ti o da lori faaji ti o dari iṣẹlẹ, n ṣe atilẹyin titẹ-pupọ ati ṣiṣe awọn ibeere nẹtiwọọki ni ipo asynchronous.

Iyipada bọtini kan ninu itusilẹ tuntun jẹ imuduro ibamu pẹlu awọn idii ti a gbalejo ni ibi ipamọ NPM, eyiti o fun laaye Deno lati lo diẹ sii ju awọn modulu miliọnu 1.3 ti a ṣẹda fun ipilẹ Node.js. Fun apẹẹrẹ, awọn ohun elo ti o da lori Deno le lo awọn modulu iraye si data itẹramọṣẹ gẹgẹbi Prisma, Mongoose ati MySQL, bakanna bi awọn ilana ipari-iwaju bii React ati Vue. Diẹ ninu awọn modulu NPM ṣi wa ni ibamu pẹlu Deno, fun apẹẹrẹ nitori awọn asopọ si Node.js-kan pato awọn eroja ayika gẹgẹbi faili package.json. O tun ko ṣee ṣe lati lo aṣẹ “deno compile” pẹlu awọn modulu NPM. Awọn idasilẹ ọjọ iwaju gbero lati koju awọn aiṣedeede ati awọn idiwọn wọnyi.

Atilẹyin fun eto module ECMAScript ti Deno ti lo tẹlẹ ati awoṣe API Wẹẹbu ti wa ni idaduro ni ipele kanna, ati ero ikojọpọ URL-orisun Deno ti o faramọ ni a lo lati gbe awọn modulu NPM wọle. Lati wọle si awọn modulu NPM, asọtẹlẹ URL pataki kan wa “npm:”, eyiti o le ṣee lo ni ọna kanna bi awọn modulu Deno deede. Fun apẹẹrẹ, lati ṣe agbewọle module NPM kan, o le pato 'gbewọle { chalk } lati "npm: chalk@5";', ati lati ṣiṣẹ iwe afọwọkọ NPM kan lati laini aṣẹ - "deno run --allow-env --allow -ka npm: ṣẹda- vite-afikun.”

Lilo awọn idii NPM ni Deno rọrun pupọ ju ni Node.js, nitori ko si iwulo lati fi sori ẹrọ awọn modulu tẹlẹ (awọn modulu ti fi sii nigbati ohun elo naa ti ṣe ifilọlẹ akọkọ), ko si faili package.json, ati pe ko si node_modules aiyipada. liana (modulu ti wa ni cache ni pín liana, sugbon o jẹ ṣee ṣe lati pada awọn atijọ ihuwasi lilo awọn aṣayan "- node-modules-dir").

Awọn ohun elo orisun NPM ni idaduro agbara lati lo iṣakoso iraye si Deno, ipinya, ati awọn agbara ilọsiwaju ti o ni imọra aabo. Lati koju awọn ikọlu nipasẹ awọn igbẹkẹle ibeere, Deno dina nipasẹ aiyipada gbogbo awọn igbiyanju lati ni iraye si eto lati awọn igbẹkẹle ati ṣafihan ikilọ kan nipa awọn iṣoro ti a rii. Fun apẹẹrẹ, nigbati module kan ba gbiyanju lati ni iraye si kikọ si /usr/bin/, ibeere ijẹrisi fun iṣẹ ṣiṣe yii yoo han: deno run npm:install-malware ⚠️ ┌ Awọn ibeere Deno kọ iraye si /usr/bin/. Ti beere lọwọ 'install-malware' ├ Ṣiṣe lẹẹkansi pẹlu --allow-write lati fori itọsi yii. Gba laaye? [y/n] (y = bẹẹni, gba laaye; n = rara, sẹ) >

Awọn ilọsiwaju ti kii ṣe NPM ni ẹya tuntun pẹlu mimu dojuiwọn ẹrọ V8 lati tu silẹ 10.9, wiwa laifọwọyi ti awọn faili pẹlu awọn titiipa, imuduro Deno.bench (), Deno.gid (), Deno.networkInterfaces (), Deno.systemMemoryInfo () ati Deno APIs. .uid (), fifi titun aiduro API Deno.Command () fun ṣiṣe awọn pipaṣẹ (gbogbo agbaye fun Deno.spawn, Deno.spawnSync ati Deno.spawnChild).

Awọn ẹya akọkọ ti Deno:

  • Aabo-Oorun iṣeto ni aiyipada. Wiwọle faili, netiwọki, ati iraye si awọn oniyipada ayika jẹ alaabo nipasẹ aiyipada ati pe o gbọdọ ṣiṣẹ ni gbangba. Awọn ohun elo nipasẹ aiyipada ṣiṣẹ ni awọn agbegbe apoti iyanrin ti o ya sọtọ ati pe ko le wọle si awọn agbara eto laisi fifun awọn igbanilaaye fojuhan;
  • Atilẹyin ti a ṣe sinu fun TypeScript kọja JavaScript. Fun iru yiyewo ati iran JavaScript, boṣewa TypeScript alakojo ti lo, eyiti o yori si kan ju ni išẹ akawe si JavaScript parsing ni V8;
  • Akoko ṣiṣe wa ni irisi faili ti o le ṣiṣẹ ti ara-ẹni kan ṣoṣo (“deno”). Lati ṣiṣẹ awọn ohun elo nipa lilo Deno, o kan nilo lati ṣe igbasilẹ faili kan ti o le ṣiṣẹ fun pẹpẹ rẹ, nipa iwọn 30 MB, eyiti ko ni awọn igbẹkẹle ita ati pe ko nilo eyikeyi fifi sori ẹrọ pataki lori eto naa. Jubẹlọ, deno ni ko kan monolithic ohun elo, sugbon jẹ kan gbigba ti awọn ipata crate jo (deno_core, rusty_v8), eyi ti o le ṣee lo lọtọ;
  • Nigbati o ba bẹrẹ eto naa, bakannaa lati gbe awọn modulu, o le lo adirẹsi URL. Fun apẹẹrẹ, lati ṣiṣẹ eto welcome.js, o le lo aṣẹ “deno https://deno.land/std/examples/welcome.js”. Koodu lati awọn orisun ita jẹ igbasilẹ ati fipamọ sori eto agbegbe, ṣugbọn kii ṣe imudojuiwọn laifọwọyi (imudojuiwọn nilo ṣiṣe ohun elo ni gbangba pẹlu asia “--tun gbee”);
  • Ṣiṣẹ daradara ti awọn ibeere nẹtiwọọki nipasẹ HTTP ni awọn ohun elo; Syeed jẹ apẹrẹ fun ṣiṣẹda awọn ohun elo nẹtiwọọki iṣẹ giga;
  • Agbara lati ṣẹda awọn ohun elo wẹẹbu agbaye ti o le ṣe mejeeji ni Deno ati ni aṣawakiri wẹẹbu deede;
  • Iwaju ti ṣeto boṣewa ti awọn modulu, lilo eyiti ko nilo abuda si awọn igbẹkẹle ita. Awọn modulu lati ikojọpọ boṣewa ti ṣe ayewo afikun ati idanwo ibamu;
  • Ni afikun si akoko asiko, pẹpẹ Deno tun ṣe bi oluṣakoso package ati gba ọ laaye lati wọle si awọn modulu nipasẹ URL inu koodu naa. Fun apẹẹrẹ, lati fifuye a module, o le pato ninu awọn koodu "gbe wọle * bi log lati "https://deno.land/std/log/mod.ts". Awọn faili ti a ṣe igbasilẹ lati awọn olupin ita nipasẹ URL ti wa ni ipamọ. Isopọmọ si awọn ẹya module jẹ ipinnu nipasẹ sisọ awọn nọmba ẹya inu URL naa, fun apẹẹrẹ, “https://unpkg.com/[imeeli ni idaabobo]/dist/liltest.js";
  • Eto naa pẹlu eto ayewo igbẹkẹle iṣọpọ (aṣẹ “deno info”) ati ohun elo fun kika koodu (deno fmt);
  • Gbogbo awọn iwe afọwọkọ ohun elo le ni idapo sinu faili JavaScript kan.

orisun: opennet.ru

Fi ọrọìwòye kun