programmatūra · 5 min · 15.07.2026

Deno 2.9 iesaiņo darbvirsmas lietotni vienā failā — bez Electron, ar OS pārlūka dzini

Deno 2.9 pievieno komandu, kas web projektu pārvērš par darbvirsmas lietotni. deno desktop paņem skriptu vai web ietvara projektu, atpazīst ietvaru — Next.js, Fresh, Astro — un iesaiņo to vienā izpildāmā failā ar kodu un saskarni iekšā. Deno komanda šo laidienu izlaida 25. jūnijā.

Līdz šim izplatītākais ceļš no web koda uz darbvirsmas lietotni bija Electron, kas katrā failā iesaiņo veselu Chromium kopiju. Tas nozīmē desmitiem megabaitu jau tukšā logā. Deno pēc noklusējuma to nedara — tā vietā tā izmanto operētājsistēmā jau esošo pārlūka dzini.

Kā strādā deno desktop

Komanda pieņem gan atsevišķu skriptu, gan gatavu web ietvara projektu. Ietvaru tā atpazīst pati. Deno.serve() automātiski piesaistās tam portam, kuru klausās logs, tāpēc manuāli neko konfigurēt nevajag. Rezultātā rodas viens fails, ko var izplatīt.

Izvades formāti sedz visas trīs galvenās platformas: .dmg un .app macOS, .exe un .msi Windows, kā arī .AppImage, .deb un .rpm Linux. Būvēt citai platformai var ar karodziņu --target, bet visām uzreiz — ar --all-targets. Detaļas ir Deno 2.9 laidiena piezīmēs.

Praktiski tas nozīmē, ka Next.js vai Astro projektu, kas jau griežas pārlūkā, var iesaiņot lokālā lietotnē bez atsevišķa darbvirsmas ietvara. Loga saskarni renderē web slānis, bet lietotnes loģika griežas Deno pusē, un abus izplata kā vienu artefaktu ar iekšā iesaiņotu Deno izpildvidi.

Divi dzinēji: WebView un CEF

Deno Desktop atbalsta divus renderēšanas dzinējus, un izvēle maina gan faila izmēru, gan izskatu. Noklusējuma variants ir WebView: Windows tas ir WebView2, macOS un Linux — WebKit. Tas dod mazāku failu un ātrāku starta laiku, jo dzinis jau ir sistēmā.

Otrs variants ir CEF, tas ir Chromium Embedded Framework. Tas iesaiņo pašu Chromium, tāpēc lietotne izskatās vienādi visās platformās, bet failam pieaug desmitiem megabaitu. WebView taupa vietu; CEF dod paredzamu renderējumu. Izvēle atkarīga no tā, kas projektam svarīgāks.

Sistēmas WebView pieeja nav jauna doma. To pašu ceļu iet Rust ietvars Tauri, kas arī balstās uz operētājsistēmas pārlūka dzini, nevis iesaiņo savu. Deno atšķirība ir tā, ka viss notiek vienā rīkā kopā ar izpildvidi, tāpēc atsevišķu Rust ķēdi uzstādīt nevajag.

Ātrāks starts un mazāka atmiņa

Deno 2.9 arī pievelk pašu izpildvidi. Salīdzinājumā ar 2.8 aukstais starts nokritis no 34,2 ms uz 17,3 ms — gandrīz uz pusi. Deno.serve reālas slodzes testā apstrādā 72,4 tūkstošus pieprasījumu sekundē pret agrākajiem 56,8 tūkstošiem. Atmiņas patēriņš, apstrādājot 1 MiB ķermeni, nokritis no 197 MB uz 63 MB.

Aukstā starta laiks 2.9 versijā ir 17,3 ms pret 34,2 ms 2.8 versijā, atmiņas patēriņš vienam megabaitam — 63 MB pret 197 MB.

Šie skaitļi nāk no pašas Deno komandas mērījumiem, tāpēc pie tiem der izturēties kā pie ražotāja etaloniem, ne neatkarīga testa. Bet virziens ir skaidrs: īsāks starts palīdz komandrindas skriptiem un serveriem, kas bieži startē no jauna.

–bundle sakļauj bināro failu

Kopā ar deno compile tagad var lietot eksperimentālu karodziņu --bundle. Tas vispirms izlaiž ieejas punktu caur Deno saišķotāju un izmet neizmantoto kodu, nevis iesaiņo visu node_modules. Viena lodash izmēģinājuma projekta binārais fails ar to sarucis no 11,6 MB uz 1,5 MB. Pievienojot --minify, izmēru var samazināt vēl.

Tas ir svarīgi npm smagiem projektiem, kur pāris atkarību ievelk aiz sevis lielu koka daļu. Saišķotājs izgriež to, kas reāli netiek izsaukts, tāpēc gala fails satur tikai izpildīto kodu.

Pāreja no Node projektiem

Deno 2.9 vieglāk pieņem jau esošus Node projektus. deno install tagad tieši nolasa package-lock.json, pnpm-lock.yaml, yarn.lock un bun.lock, no tiem uzsējot jaunu deno.lock ar precīzām atrisinātajām versijām un integritātes jaucējkodiem. Atkarību koks pārejot nemainās, tāpēc nav pārsteigumu ar citām versijām.

Klāt nākušas arī komandas atkarību pārvaldībai no komandrindas. deno link un deno unlink strādā līdzīgi npm link, sasaistot lokālu pakotni. deno list parāda projekta atkarības ar prasīto un atrisināto versiju, un to var filtrēt ar --depth, --prod vai aizstājējzīmēm. Pilns saraksts ir GitHub laidiena lapā.

Deno 2.5, iepriekšējais LTS laidiens, sasniedza dzīves cikla beigas 30. aprīlī, tāpēc projektiem, kas palika uz tā, tagad ir konkrēts iemesls skatīties uz 2.9. Aktuālo atbalsta grafiku uztur endoflife.date.

Web API un Node saderība

Blakus lielajām lietām 2.9 pievieno arī web platformas gabalus: CSS moduļu importu, papildinājumus Web Cryptography API, Web Locks API un navigator.userAgentData. Node saderības pusē turpinās darbs pie Node.js 26 atbalsta, un stabilizēta ir tā saukto bare Node iebūvēto moduļu atrisināšana.

Deno Desktop un --bundle pagaidām ir atzīmēti kā eksperimentāli, tāpēc uz ražošanu tos likt vēl agri. Abi risina vienu konkrētu problēmu — cik liels sanāk gala fails. Lodash izmēģinājumā tas nozīmēja 1,5 MB tur, kur agrāk bija 11,6 MB.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie