Ua hōʻike ka mea kākau o Node.js i ka paepae JavaScript palekana Deno 1.0
Ma hope o ʻelua makahiki o ka hoʻomohala ʻana hōʻike ʻia hoʻokuʻu nui mua ʻO Deno 1.0, he kahua no ka hoʻokō kū hoʻokahi o nā noi ma JavaScript a me TypeScript, hiki ke hoʻohana ʻia e hana i nā mea lawelawe e holo ana ma ke kikowaena. Hoʻokumu ʻia ka paepae e Ryan Dahl (ʻO Ryan Dahl), ka mea nāna i hana iā Node.js. E like me Node.js, hoʻohana ʻo Deno i ka mīkini JavaScript V8, i hoʻohana pū ʻia ma nā polokalamu kele pūnaewele Chromium. Ma ka manawa like, ʻaʻole ʻo Deno kahi mākia o Node.js, akā he papahana hou i hana ʻia mai ka wā ʻōpala. Code papahana mahele ʻia e ma lalo o ka laikini MIT. Huipuia hoomakaukauia no Linux, Windows a me macOS.
Hoʻopili ʻia ka helu helu koʻikoʻi me ka hoʻopaʻa ʻana o nā API ma ka inoa inoa Deno, nona ke kuleana no ka launa pū ʻana o nā noi me ka OS. Nā polokalamu polokalamu i loaʻa i kēia manawa ʻaʻole paʻa, hūnā ʻia ma ka paʻamau a loaʻa wale i ka wā e holo ana ma ke ʻano "--unstable". Ke hoʻokumu ʻia nā mana hou, e paʻa mālie ia mau API. ʻO ka API i loko o ka papa inoa honua, kahi i loaʻa nā hana maʻamau e like me setTimeout() a me fetch (), kokoke loa i ka API o nā polokalamu kele pūnaewele maʻamau a hoʻomohala ʻia e like me nā kūlana Pūnaewele no nā polokalamu kele pūnaewele. ʻO nā API i hāʻawi ʻia e Rust, i hoʻohana pololei ʻia i ka code platform, a me ka interface no ka hoʻomohala ʻana i nā plugins no Deno runtime, ʻaʻole i hoʻopaʻa ʻia a hoʻomau i ka ulu ʻana.
ʻO nā kumu nui no ka hoʻokumu ʻana i kahi kahua JavaScript hou, ʻo ia ka makemake e hoʻopau i nā hewa manaʻo. ʻae ʻia i loko o ka hale hoʻolālā Node.js, a hāʻawi i nā mea hoʻohana i kahi ʻoi aku ka palekana. No ka hoʻomaikaʻi ʻana i ka palekana, ua kākau ʻia ka ʻenekini V8 ma Rust, ka mea e pale ai i nā mea nāwaliwali e kū mai ana mai ka hoʻomanaʻo haʻahaʻa haʻahaʻa, e like me ka loaʻa ʻana ma hope o ka manuahi, nā kuhikuhi kuhikuhi null, a me nā overruns. Hoʻohana ʻia ka paepae no ka hana ʻana i nā noi ma ke ʻano pale ʻole Tokyo, kākau pū ʻia ma Rust. ʻAe ʻo Tokio iā ʻoe e hana i nā noi hana kiʻekiʻe e pili ana i ka hoʻolālā hanana hanana, ke kākoʻo ʻana i nā noi pūnaewele multi-threading a me ka hoʻoponopono ʻana i ke ʻano asynchronous.
Hoʻonohonoho paʻamau pili i ka palekana. ʻAʻole paʻamau ka loaʻa ʻana o ka faila, ka pūnaewele, a me ke komo ʻana i nā ʻano hoʻololi kaiapuni a pono e ʻae ʻia. Ke holo nei nā noi ma nā wahi pahu one kaʻawale a ʻaʻole hiki ke komo i nā mana ʻōnaehana me ka ʻole o ka hāʻawi ʻana i nā ʻae kikoʻī;
Kākoʻo i kūkulu ʻia no TypeScript ma waho o JavaScript. Hoʻohana ʻia ka mea hōʻuluʻulu TypeScript maʻamau no ka nānā ʻana i nā ʻano a hoʻopuka i ka JavaScript, e alakaʻi ana i kahi pānaʻi hoʻokō i hoʻohālikelike ʻia me JavaScript parsing ma V8. I ka wā e hiki mai ana, hoʻolālā mākou e hoʻomākaukau i kā mākou hoʻokō ponoʻī o ka ʻōnaehana nānā ʻano TypeScript, e hoʻomaikaʻi ai i ka hana hoʻoponopono TypeScript ma ke ʻano o ka nui;
Hiki mai ka manawa holo ma ke ʻano o kahi faila hoʻokō ponoʻī hoʻokahi ("deno"). E holo i nā noi me Deno ua lawa hoʻouka no kona paepae aia hoʻokahi faila hiki ke hoʻokō, ma kahi o 20 MB ka nui, ʻaʻohe mea hilinaʻi waho a ʻaʻole koi i kahi hoʻonohonoho kūikawā ma ka ʻōnaehana. Eia kekahi, ʻaʻole ʻo deno kahi noi monolithic, akā he hōʻiliʻili o nā pahu pahu i Rust (deno_core, rusty_v8), hiki ke hoʻohana kaʻawale;
I ka hoʻomaka ʻana i ka papahana, a me ka hoʻouka ʻana i nā modules, hiki iā ʻoe ke hoʻohana i ka ʻōlelo URL. No ka laʻana, e holo i ka polokalamu welcome.js, hiki iā ʻoe ke hoʻohana i ke kauoha "deno https://deno.land/std/examps/welcome.js". Hoʻoiho ʻia nā code mai nā kumuwaiwai o waho a hoʻopaʻa ʻia ma ka ʻōnaehana kūloko, akā ʻaʻole i hoʻonui ʻia (e koi ʻia ka hoʻonui ʻana i ka noi me ka hae "--reload");
ʻO ka hana kūpono o nā noi pūnaewele ma o HTTP i nā noi; ua hoʻolālā ʻia ke kahua no ka hana ʻana i nā noi pūnaewele hana kiʻekiʻe;
ʻO ka hiki ke hana i nā noi pūnaewele puni honua i hiki ke hoʻokō ʻia ma Deno a ma kahi polokalamu kele pūnaewele maʻamau;
loaʻa nui hoʻonohonoho maʻamau o nā modula, ʻaʻole pono ka hoʻohana ʻana i ka hoʻopaʻa ʻana i nā hilinaʻi waho. Ua loaʻa i nā modula mai ka hōʻiliʻili maʻamau ka loiloi hou a me ka hoʻāʻo ʻana;
Ma waho aʻe o ka runtime, hana pū ka Deno platform ma ke ʻano he mea hoʻokele pōpō a hiki iā ʻoe ke komo i nā modules e URL i loko o ke code. No ka laʻana, no ka hoʻouka ʻana i kahi module, hiki iā ʻoe ke kuhikuhi i ke code "import * as log from "https://deno.land/std/log/mod.ts". Hoʻopili ʻia nā faila i hoʻoiho ʻia mai nā kikowaena waho ma o URL. Hoʻoholo ʻia ka hoʻopaʻa ʻana i nā mana module ma ke kuhikuhi ʻana i nā helu mana i loko o ka URL, no ka laʻana, "https://unpkg.com/[pale ʻia ka leka uila]/dist/liltest.js";
Aia i loko o ka hale kahi ʻōnaehana nānā hilinaʻi i hoʻohui ʻia (ke kauoha "deno info") a me kahi mea pono no ka hoʻopili ʻana i nā code (deno fmt);
Hiki ke hoʻohui ʻia nā palapala noi a pau i hoʻokahi faila JavaScript.
Nā ʻokoʻa mai Node.js:
ʻAʻole hoʻohana ʻo Deno i ka luna pūʻulu npm
a ʻaʻole i hoʻopaʻa ʻia i nā waihona, ua ʻōlelo ʻia nā modules ma o kahi URL a i ʻole kahi ala faila, a hiki ke kau ʻia nā modules ma kekahi pūnaewele;
ʻAʻole hoʻohana ʻo Deno i "package.json" e wehewehe i nā modula;
ʻO ka ʻokoʻa API, nā hana asynchronous a pau ma Deno e hoʻihoʻi i kahi ʻōlelo hoʻohiki;
Pono ʻo Deno i ka wehewehe kikoʻī o nā ʻae āpau e pono ai no nā faila, pūnaewele a me nā ʻano hoʻololi kaiapuni;
ʻO nā hewa āpau i hāʻawi ʻole ʻia me nā mea lawelawe e alakaʻi i ka hoʻopau ʻana o ka noi;
Hoʻohana ʻo Deno i ka ʻōnaehana module ECMAScript a ʻaʻole kākoʻo i ka koi ();
Ua kākau ʻia ka server HTTP i kūkulu ʻia a Deno ma TypeScript a holo ma luna o nā kumu TCP maoli, ʻoiai ua kākau ʻia ka server HTTP Node.js ma C a hāʻawi i nā mea paʻa no JavaScript. Ua kālele ka poʻe hoʻomohala o Deno i ka hoʻonui ʻana i ka papa kumu TCP holoʻokoʻa a me ka hāʻawi ʻana i kahi interface maʻamau. Hāʻawi ʻo Deno HTTP Server i ka haʻahaʻa haʻahaʻa akā e hōʻoiaʻiʻo i ka latency haʻahaʻa haʻahaʻa. No ka laʻana, i ka hoʻāʻo ʻana, hiki i kahi noi maʻalahi e pili ana i ka server Deno HTTP ke hana i ka 25 tausani mau noi i kēlā me kēia kekona me ka latency kiʻekiʻe o 1.3 milliseconds. Ma Node.js, ua hoʻohana ʻia kahi noi like i 34 tausani mau noi i kēlā me kēia kekona, akā ʻo nā latencies mai ka 2 a me 300 milliseconds.
ʻAʻole kūpono ʻo Deno me nā pūʻolo no Node.js (NPM), akā ke kūkulu ʻia nei ma kahi kaʻawale interlayer no ka launa pū ʻana me ka waihona Node.js maʻamau, ʻoiai e ulu ana, hiki ke holo i nā noi i kākau ʻia no Node.js ma Deno.