Deno JavaScript platforması NPM modulları ilə uyğun gəlir

Deno 1.28 buraxıldı, server tərəfi işləyiciləri yaratmaq üçün istifadə oluna bilən JavaScript və TypeScript proqramlarını sandboxing üçün çərçivə. Platforma Node.js-in yaradıcısı Rayan Dahl tərəfindən hazırlanıb. Node.js kimi, Deno da Chromium əsaslı brauzerlərdə istifadə olunan V8 JavaScript mühərrikindən istifadə edir. Eyni zamanda, Deno Node.js fork deyil, sıfırdan yaradılmış yeni layihədir. Layihə kodu MIT lisenziyası altında paylanır. Quraşdırmalar Linux, Windows və macOS üçün hazırlanır.

Deno layihəsi istifadəçiləri daha təhlükəsiz mühitlə təmin etmək və Node.js arxitekturasında konseptual səhvləri aradan qaldırmaq üçün yaradılmışdır. Təhlükəsizliyi yaxşılaşdırmaq üçün V8 mühərriki Rust dilində yazılmışdır ki, bu da aşağı səviyyəli yaddaş manipulyasiyasından yaranan bir çox zəifliklərin qarşısını alır. Sorğuları bloklanmayan rejimdə emal etmək üçün Rust dilində də yazılmış Tokio platformasından istifadə olunur. Tokio sizə hadisələrə əsaslanan arxitektura əsasında yüksək performanslı proqramlar yaratmağa imkan verir, çox iş parçacığını dəstəkləyir və asinxron rejimdə şəbəkə sorğularını emal edir.

Yeni buraxılışda əsas dəyişiklik Deno-ya Node.js platforması üçün yaradılmış 1.3 milyondan çox moduldan istifadə etməyə imkan verən NPM repozitoriyasında yerləşdirilən paketlərlə uyğunluğun sabitləşdirilməsidir. Məsələn, Deno əsaslı proqramlar indi Prisma, Mongoose və MySQL kimi davamlı məlumat girişi modullarından, həmçinin React və Vue kimi front-end çərçivələrdən istifadə edə bilər. Bəzi NPM modulları hələ də Deno ilə uyğunsuz olaraq qalır, məsələn, package.json faylı kimi Node.js-ə məxsus mühit elementlərinə bağlanmalar səbəbindən. Həmçinin NPM modulları ilə "deno compile" əmrindən istifadə etmək hələ mümkün deyil. Gələcək buraxılışlar bu uyğunsuzluqları və məhdudiyyətləri aradan qaldırmağı planlaşdırır.

Deno-nun əvvəllər istifadə olunan ECMAScript modul sistemi və Web API modeli üçün dəstək eyni səviyyədə saxlanılır və NPM modullarını idxal etmək üçün Deno-nun tanış URL-əsaslı yükləmə sxemindən istifadə olunur. NPM modullarına daxil olmaq üçün adi Deno modulları ilə eyni şəkildə istifadə oluna bilən “npm:” xüsusi URL prefiksi var. Məsələn, NPM modulunu idxal etmək üçün siz "npm:chalk@5"-dən 'import { chalk };' təyin edə bilərsiniz və NPM skriptini komanda xəttindən işlətmək üçün - "deno run --allow-env --allow" -oxu npm:create-vite-extra.”

Denoda NPM paketlərindən istifadə Node.js ilə müqayisədə daha asandır, çünki modulları əvvəlcədən quraşdırmaq lazım deyil (modullar proqram ilk dəfə işə salındıqda quraşdırılır), paket.json faylı yoxdur və standart node_modules yoxdur. kataloqu (modullar paylaşılan kataloqda keşlənir, lakin “--node-modules-dir” seçimindən istifadə edərək köhnə davranışı qaytarmaq mümkündür).

NPM əsaslı proqramlar Deno-nun girişə nəzarət, izolyasiya və təhlükəsizliyə həssas qabaqcıl imkanlarından istifadə etmək qabiliyyətini saxlayır. Şübhəli asılılıqlar vasitəsilə hücumlara qarşı çıxmaq üçün Deno, asılılıqlardan sistemə daxil olmaq üçün bütün cəhdləri defolt olaraq bloklayır və aşkar edilmiş problemlər haqqında xəbərdarlıq göstərir. Məsələn, modul /usr/bin/-ə yazma girişi əldə etməyə çalışdıqda, bu əməliyyat üçün təsdiq sorğusu görünəcək: deno run npm:install-malware ⚠️ ┌ Deno sorğuları /usr/bin/-ə yazma girişi. ├ `install-zərərli proqram` tərəfindən tələb olundu ├ Bu əmri keçmək üçün --allow-write ilə yenidən işə salın. └ İcazə verin? [y/n] (y = bəli, icazə verin; n = yox, inkar) >

Yeni versiyada NPM olmayan təkmilləşdirmələrə V8 mühərrikinin 10.9-u buraxmaq üçün yenilənməsi, kilidləri olan faylların avtomatik aşkarlanması, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo()-nun sabitləşdirilməsi daxildir. və Deno API'ləri.

Deno-nun əsas xüsusiyyətləri:

  • Təhlükəsizlik yönümlü standart konfiqurasiya. Fayl girişi, şəbəkə və mühit dəyişənlərinə giriş standart olaraq qeyri-aktivdir və açıq şəkildə aktivləşdirilməlidir. Tətbiqlər standart olaraq təcrid olunmuş sandbox mühitlərində işləyir və açıq icazələr vermədən sistem imkanlarına daxil ola bilməz;
  • JavaScript-dən kənar TypeScript üçün daxili dəstək. Növün yoxlanılması və JavaScript generasiyası üçün standart TypeScript kompilyatorundan istifadə edilir ki, bu da V8-də JavaScript təhlili ilə müqayisədə performansın azalmasına gətirib çıxarır;
  • İcra vaxtı tək müstəqil icra edilə bilən fayl (“deno”) şəklində gəlir. Deno istifadə edərək proqramları işə salmaq üçün sadəcə olaraq platformanız üçün xarici asılılığı olmayan və sistemdə heç bir xüsusi quraşdırma tələb etməyən təxminən 30 MB ölçüsündə bir icra edilə bilən fayl yükləmək lazımdır. Üstəlik, deno monolit proqram deyil, ayrıca istifadə edilə bilən Rust sandıq paketlərinin (deno_core, rusty_v8) toplusudur;
  • Proqramı işə salarkən, həmçinin modulları yükləmək üçün URL ünvanından istifadə edə bilərsiniz. Məsələn, welcome.js proqramını işə salmaq üçün “deno https://deno.land/std/examples/welcome.js” əmrindən istifadə edə bilərsiniz. Xarici resurslardan kod yerli sistemdə endirilir və keşlənir, lakin heç vaxt avtomatik olaraq yenilənmir (yenilənmə üçün proqramın açıq şəkildə “--reload” bayrağı ilə işləməsi tələb olunur);
  • Tətbiqlərdə HTTP vasitəsilə şəbəkə sorğularının səmərəli işlənməsi; platforma yüksək performanslı şəbəkə proqramlarının yaradılması üçün nəzərdə tutulub;
  • Həm Deno-da, həm də adi veb-brauzerdə icra oluna bilən universal veb proqramlar yaratmaq imkanı;
  • İstifadəsi xarici asılılıqlara bağlanmağı tələb etməyən standart modul dəstinin olması. Standart kolleksiyadan olan modullar əlavə audit və uyğunluq testindən keçmişdir;
  • Deno platforması icra müddətindən əlavə paket meneceri kimi də fəaliyyət göstərir və kodun içərisində URL vasitəsilə modullara daxil olmağa imkan verir. Məsələn, modulu yükləmək üçün "https://deno.land/std/log/mod.ts" saytından "import *" kodunu qeyd edə bilərsiniz. URL vasitəsilə xarici serverlərdən endirilən fayllar keşlənir. Modul versiyaları ilə əlaqə URL daxilində versiya nömrələri göstərilməklə müəyyən edilir, məsələn, “https://unpkg.com/[e-poçt qorunur]/dist/liltest.js";
  • Bu struktura inteqrasiya olunmuş asılılıq yoxlama sistemi (“deno info” əmri) və kodun formatlaşdırılması üçün yardım proqramı (deno fmt) daxildir;
  • Bütün proqram skriptləri bir JavaScript faylında birləşdirilə bilər.

Mənbə: opennet.ru

Добавить комментарий