Tus sau ntawm Node.js nthuav qhia qhov ruaj ntseg JavaScript platform Deno 1.0

Tom qab ob xyoos ntawm kev loj hlob hais tawm thawj qhov kev tso tawm loj Dhia 1.0, lub platform rau kev ua tiav ib leeg ntawm cov ntawv thov hauv JavaScript thiab TypeScript, uas tuaj yeem siv los tsim cov neeg tuav haujlwm uas khiav ntawm lub server. Lub platform yog tsim los ntawm Ryan Dahl (Ryan Dahl), tus tsim ntawm Node.js. Zoo li Node.js, Deno siv lub cav JavaScript V8, uas kuj yog siv hauv Chromium-based browsers. Tib lub sijhawm, Deno tsis yog rab rawg ntawm Node.js, tab sis yog ib txoj haujlwm tshiab tsim los ntawm kos. Qhov project code faib los ntawm nyob rau hauv MIT daim ntawv tso cai. Cov rooj sib txoos npaj rau Linux, Windows thiab macOS.

Tus naj npawb tseem ceeb yog txuam nrog kev ruaj khov ntawm APIs hauv Deno namespace, uas yog lub luag haujlwm rau kev sib cuam tshuam ntawm daim ntawv thov nrog OS. Software interfaces uas muaj tam sim no tsis ruaj khov, yog zais los ntawm lub neej ntawd thiab tsuas yog muaj thaum khiav hauv "--tsis ruaj khov" hom. Raws li cov qauv tshiab tau tsim, xws li APIs yuav maj mam ua kom ruaj khov. API nyob rau hauv lub ntiaj teb no namespace, uas muaj xws li tej functions xws li setTimeout() thiab fetch(), yog ze li sai tau rau API ntawm cov pa web browsers thiab yog tsim nyob rau hauv raws li Web qauv rau browsers. Cov APIs muab los ntawm Rust, uas yog siv ncaj qha rau hauv lub platform code, nrog rau kev sib txuas rau kev tsim plugins rau Deno runtime, tseem tsis tau ruaj khov thiab txuas ntxiv txhim kho.

Cov laj thawj tseem ceeb rau kev tsim lub platform tshiab JavaScript yog lub siab xav tshem tawm cov tswv yim yuam kev, tau txais hauv Node.js architecture, thiab muab cov neeg siv nrog ib puag ncig kev nyab xeeb dua. Txhawm rau txhim kho kev ruaj ntseg, lub cav V8 tau sau rau hauv Rust, uas zam ntau qhov tsis zoo uas tshwm sim los ntawm kev ua haujlwm qis qis, xws li kev nkag mus tom qab tsis pub dawb, tsis muaj qhov taw qhia tsis zoo, thiab tsis muaj kev cuam tshuam. Lub platform yog siv los ua cov ntawv thov hauv hom tsis thaiv Tokyo, kuj sau nyob rau hauv Rust. 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.

ntsiab nta 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;
  • Built-in kev txhawb nqa rau TypeScript dhau ntawm JavaScript. Tus qauv TypeScript compiler yog siv los txheeb xyuas hom thiab tsim JavaScript, uas ua rau muaj kev ua tau zoo piv rau JavaScript parsing hauv V8. Nyob rau hauv lub neej yav tom ntej, peb npaj yuav npaj peb tus kheej kev siv ntawm TypeScript hom tshuaj xyuas system, uas yuav txhim kho TypeScript kev ua tau zoo los ntawm qhov kev txiav txim loj;
  • Runtime tuaj nyob rau hauv daim ntawv ntawm ib tus kheej-muaj cov ntaub ntawv executable ("deno"). Txhawm rau khiav daim ntawv thov siv Deno nws txaus upload rau nws lub platform muaj ib tug executable ntaub ntawv, txog 20 MB nyob rau hauv loj, uas tsis muaj lwm dependencies thiab tsis yuav tsum tau tshwj xeeb installation ntawm lub system. Ntxiv mus, deno tsis yog ib daim ntawv thov monolithic, tab sis yog ib phau ntawm cov pob crate hauv Rust (deno_core, rov_v 8), 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;
  • muaj txheem txheej 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 qauv los ntawm URL hauv cov lej. 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.

Qhov txawv ntawm Node.js:

  • Deno tsis siv npm pob tus thawj tswj
    thiab tsis khi rau repositories, modules tau hais los ntawm URL lossis los ntawm txoj kev ua ntaub ntawv, thiab cov modules lawv tus kheej tuaj yeem muab tso rau hauv ib lub vev xaib;
  • Deno tsis siv "package.json" los txhais cov modules;
  • API sib txawv, tag nrho cov asynchronous ua hauv Deno rov qab cog lus;
  • Deno xav kom meej meej txhais ntawm txhua qhov tsim nyog tso cai rau cov ntaub ntawv, network thiab ib puag ncig hloov pauv;
  • Txhua qhov yuam kev uas tsis tau muab rau cov neeg tuav haujlwm ua rau kev txiav tawm ntawm daim ntawv thov;
  • Deno siv ECMAScript module system thiab tsis txhawb xav tau ();
  • Deno's built-in HTTP neeg rau zaub mov tau sau rau hauv TypeScript thiab sau rau saum toj ntawm cov neeg TCP qhov (socket), thaum Node.js HTTP server tau sau hauv C thiab muab kev khi rau JavaScript. Deno's developers tau tsom mus rau optimizing tag nrho TCP qhov (socket) txheej thiab muab ib tug ntau dua interface. Deno HTTP Server muab kev nkag mus qis dua tab sis lav qhov kev kwv yees qis latency. Piv txwv li, hauv kev sim, ib daim ntawv thov yooj yim raws li Deno HTTP neeg rau zaub mov muaj peev xwm ua tiav 25 txhiab thov ib ob nrog qhov siab tshaj plaws latency ntawm 1.3 milliseconds. Hauv Node.js, ib daim ntawv thov zoo sib xws tau ua tiav 34 txhiab thov ib ob, tab sis latencies nyob ntawm 2 thiab 300 milliseconds.
  • Deno tsis sib xws nrog pob khoom rau Node.js (NPM), tab sis tab tom tsim tawm nyias interlayer rau kev sib raug zoo nrog tus qauv Node.js tsev qiv ntawv, raws li nws tsim, ntau thiab ntau daim ntawv sau npe rau Node.js yuav muaj peev xwm khiav hauv Deno.
  • Tau qhov twg los: opennet.ru

Ntxiv ib saib