La Deno JavaScript-platformo estas kongrua kun NPM-moduloj

Deno 1.28 estis publikigita, kadro por sandboxing JavaScript kaj TypeScript-aplikoj kiuj povas esti uzitaj por krei servilflankajn prizorgilojn. La platformo estas disvolvita de Ryan Dahl, la kreinto de Node.js. Kiel Node.js, Deno uzas la V8 JavaScript-motoron, kiu ankaŭ estas uzata en Chromium-bazitaj retumiloj. Samtempe, Deno ne estas forko de Node.js, sed estas nova projekto kreita de nulo. La projektkodo estas distribuita sub la MIT-licenco. Konstruaĵoj estas pretaj por Linukso, Vindozo kaj macOS.

La projekto Deno estis kreita por provizi uzantojn per pli sekura medio kaj forigi koncipajn erarojn en la arkitekturo Node.js. Por plibonigi sekurecon, la V8-motoro estas skribita en Rust, kiu evitas multajn el la vundeblecoj kiuj ekestiĝas de malaltnivela memormanipulado. Por prilabori petojn en ne-bloka reĝimo, la Tokio-platformo, ankaŭ skribita en Rust, estas uzata. Tokio permesas krei alt-efikecajn aplikaĵojn bazitajn sur arkitekturo gvidata de evento, subtenante multfadenajn kaj prilaborajn retajn petojn en nesinkrona reĝimo.

Ŝlosila ŝanĝo en la nova eldono estas la stabiligo de kongruo kun pakaĵoj gastigitaj en la deponejo NPM, kiu permesas al Deno uzi pli ol 1.3 milionojn da moduloj kreitaj por la platformo Node.js. Ekzemple, Deno-bazitaj aplikoj nun povas uzi persistajn datumajn alirmodulojn kiel Prisma, Mongoose kaj MySQL, same kiel antaŭajn kadrojn kiel React kaj Vue. Iuj NPM-moduloj ankoraŭ restas malkongruaj kun Deno, ekzemple pro ligoj al Node.js-specifaj medioelementoj kiel ekzemple la dosiero package.json. Ankaŭ ankoraŭ ne eblas uzi la komandon "deno compile" kun NPM-moduloj. Estontaj eldonoj planas trakti ĉi tiujn nekongruojn kaj limigojn.

Subteno por la antaŭe uzita ECMAScript-modulsistemo de Deno kaj Web API-modelo estas retenita sur la sama nivelo, kaj la konata URL-bazita ŝarĝskemo de Deno estas utiligita por importi NPM-modulojn. Por aliri NPM-modulojn, ekzistas speciala URL-prefikso "npm:", kiu povas esti uzata same kiel regulaj Deno-moduloj. Ekzemple, por importi NPM-modulon, vi povas specifi 'import { chalk } de "npm:chalk@5";', kaj ruli NPM-skripton de la komandlinio - "deno run --allow-env --allow -read npm:create- vite-extra.”

Uzi NPM-pakaĵojn en Deno estas multe pli facila ol en Node.js, ĉar ne necesas antaŭinstali modulojn (moduloj estas instalitaj kiam la aplikaĵo unue estas lanĉita), ne ekzistas package.json dosiero, kaj ne ekzistas defaŭlta node_modules. dosierujo (moduloj estas kaŝmemorigitaj en komuna dosierujo, sed eblas redoni la malnovan konduton uzante la opcion "--node-modules-dir").

NPM-bazitaj aplikoj konservas la kapablon uzi la alirkontrolon, izolitecon kaj sekurec-sentemajn progresintajn kapablojn de Deno. Por kontraŭstari atakojn per dubindaj dependecoj, Deno blokas defaŭlte ĉiujn provojn akiri aliron al la sistemo de dependecoj kaj montras averton pri detektitaj problemoj. Ekzemple, kiam modulo provas akiri skriban aliron al /usr/bin/, konfirma peto por ĉi tiu operacio estos montrata: deno run npm:install-malware ⚠️ ┌ Deno petas skriban aliron al /usr/bin/. ├ Petita de `install-malware` ├ Rulu denove per --allow-write por preteriri ĉi tiun promptilon. └ Ĉu permesi? [y/n] (y = jes, permesi; n = ne, nei) >

Ne-NPM-plibonigoj en la nova versio inkluzivas ĝisdatigon de la V8-motoro por liberigi 10.9, aŭtomatan detekton de dosieroj kun seruroj, stabiligo de la Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() kaj Deno APIs..uid(), aldonante novan malstabilan API Deno.Command() por ruli komandojn (universala anstataŭaĵo por Deno.spawn, Deno.spawnSync kaj Deno.spawnChild).

Ĉefaj trajtoj de Deno:

  • Sekurec-orientita defaŭlta agordo. Dosieraliro, interkonektado kaj aliro al mediovariabloj estas malebligitaj defaŭlte kaj devas esti eksplicite ebligitaj. Aplikoj defaŭlte funkcias en izolitaj sablokesto-medioj kaj ne povas aliri sistemajn kapablojn sen doni eksplicitajn permesojn;
  • Enkonstruita subteno por TypeScript preter JavaScript. Por tipkontrolo kaj JavaScript-generado, la norma TypeScript-kompililo estas uzata, kio kondukas al malpliigo de rendimento kompare kun JavaScript-analizo en V8;
  • Rultempo venas en la formo de ununura memstara rulebla dosiero ("deno"). Por ruli aplikaĵojn uzante Deno, vi nur bezonas elŝuti unu ruleblan dosieron por via platformo, ĉirkaŭ 30 MB en grandeco, kiu ne havas eksterajn dependecojn kaj ne postulas specialan instaladon en la sistemo. Cetere, deno ne estas monolita aplikaĵo, sed estas kolekto de Rust-kesto-pakaĵoj (deno_core, rusty_v8), kiuj povas esti uzataj aparte;
  • Komencante la programon, kaj ankaŭ por ŝargi modulojn, vi povas uzi URL-adresadon. Ekzemple, por ruli la programon welcome.js, vi povas uzi la komandon "deno https://deno.land/std/examples/welcome.js". Kodo de eksteraj rimedoj estas elŝutita kaj konservita en la loka sistemo, sed neniam aŭtomate ĝisdatigita (ĝisdatigo postulas eksplicite ruli la aplikaĵon kun la flago "--reload");
  • Efika prilaborado de retpetoj per HTTP en aplikoj; la platformo estas desegnita por krei alt-efikecajn retajn aplikojn;
  • La kapablo krei universalajn TTT-aplikaĵojn, kiuj povas esti ekzekutitaj kaj en Deno kaj en regula TTT-legilo;
  • La ĉeesto de norma aro de moduloj, kies uzo ne postulas ligon al eksteraj dependecoj. Moduloj de la norma kolekto spertis kroman revizion kaj kongruectestadon;
  • Krom rultempo, la platformo Deno ankaŭ funkcias kiel pakaĵmanaĝero kaj permesas vin aliri modulojn per URL ene de la kodo. Ekzemple, por ŝargi modulon, vi povas specifi en la kodo "import * kiel protokolo de "https://deno.land/std/log/mod.ts". Dosieroj elŝutitaj de eksteraj serviloj per URL estas konservitaj en kaŝmemoro. Ligado al modulaj versioj estas determinita per specifado de versinumeroj ene de la URL, ekzemple, "https://unpkg.com/[retpoŝte protektita]/dist/liltest.js";
  • La strukturo inkluzivas integran dependecan inspektadsistemon (la komando "deno info") kaj ilon por kodformatado (deno fmt);
  • Ĉiuj aplikaj skriptoj povas esti kombinitaj en unu JavaScript-dosieron.

fonto: opennet.ru

Aldoni komenton