Deno nedir? ve Node.js'nin yerini gerçekten alabilir mi?

3 ay önce , Okuma süresi 3 dakika.

Deno v1.0.0'ın 13 Mayıs'ta piyasaya sürüldü. İşte bunu belirlemede rol oynayabilecek birkaç ilginç gerçek.
Deno nedir? ve Node.js'nin yerini gerçekten alabilir mi?

Önümüzdeki günlerde versiyon 1 olarak piyasaya sürülen Deno gerçekten Node.js'nin yerini alır mı tam olarak kestirmek güç ancak kısaca cevap vermek gerekirse bu iddiaları güçlendirecek birkaç özellik ile öne çıkıyor. 

Öncelikle şunu belirtmeliyim ki Deno'nun yaratıcısı aynı zamanda Node.js'nin de yaratıcısı Ryan Dahl, bu size tanıdık geldi mi? 

Ryan Dahl kimdir? diye arattığınızda daha fazla detaya ulaşacaksınız. 
Peki aynı kişi tarafından yaratılan bu iki framework biri diğerinin yerini alacaksa tüm yazımlarımızı baştan düzenlememiz mi gerekecek?  Yoksa bazı küçük değişiklikler ile mi karşımıza çıkacak? 

Devam edelim; 

Biraz daha geriye giderek isterseniz en baştan başlayalım;
2018'de Ryan, Node.js ile yanlış olduğunu düşündüğü en iyi 10 şeyi kapsadığı bir konuşma yaptı ve bu sunumun sonunda Deno'yu tanıttı. O zamanlar Node.js daha yeni popüler olmaya başlamıştı. 


 

Ve iki yıl sonra, tarih belirlendi: 13 Mayıs 2020, o zaman Deno 1.0 resmi olarak yayınlandı. Arka uç için yepyeni bir JavaScript çalışma zamanı, ancak C ++ ile yazmak yerine, Tokio platformuna (JavaScript'in ihtiyaç duyduğu eşzamansız çalışma zamanını sağlayan), yine de Google’ın V8 motorunu çalıştıran Rust'da yazılmıştır.

Peki başka ne var?

Sadece mevcut Node.js ile tamamen uyumlu yeni bir JavaScript çalışma zamanından bahsetmiyoruz, bunun yerine Ryan, Deno'ya önceki tasarımında eksik olduğunu düşündüğü bazı şeyler yapma fırsatı buldu.

Güvenlik açısından incelediğimizde Node.js her şeye erişmenize izin verir, yani dosya sistemini okuyabilir ve yazabilir, giden istekler yapabilir, ortam değişkenlerine erişebilir vb. Bu tür bir erişime sahip bir geliştirici bir avantaj olsa da, kendi kodunuzu yazarken dikkatli olmazsanız da bir güvenlik riski oluşturur.
 

deno --allow-read=/etc myscript.ts

Bu, kodunuzun klasörden, başka bir şeyden okumasına izin verir ve bir güvenlik istisnası alırsınız. Bu, diğer platformların güvenliği nasıl ele aldığına benzer. Android kullanıcısıysanız, daha önce pek çok uygulama tarafından telefonunuzdaki farklı sistemlere (yani kişiler, telefon görüşmeleri, klasörler vb.) Erişmelerine izin vermeniz istenmiştir. Burada aynı konsept uygulanabilir. Bu bayrakları komut dosyanızı yürüten komut satırının bir parçası olarak kullanarak, kodunuzun gerektirdiği izinleri sağlarsınız.

Daha eksiksiz bir standart kütüphane

JavaScript, Node'un ilk sürümlerinden bu yana standart kütüphanesini geliştirdi, ancak diğer dillerle karşılaştırıldığında hala bir yolu var. Deno da bunu geliştirmeye çalıştı ve geliştiricilerin temel görevleri yerine getirmek için resmi araçları kullanmalarına izin veren ve yalnızca karmaşık görevler için harici kütüphanelerin (ala NPM) kullanılmasını gerektiren çok eksiksiz bir standart kütüphaneye sahip olduğunu iddia ediyor.
Esasen, Kutusundan çıkar çıkmaz Deno, terminal metnine renk eklemek, harici veri yapılarıyla (ikili, csv, yaml ve diğerleri) çalışmak, UUID'ler oluşturmak ve hatta websockets yazmak için araçlarla birlikte gelir. Dosya sistemi erişimi, tarih yardımcı işlevleri, http ile ilgili işlevler ve daha fazlası gibi daha temel modüller de mevcuttur.

Eğer TypeScript hayranıysanız, o zaman Deno sizi ele geçirir, dış işleme gerek yoktur, varsayılan olarak JavaScript'e çeviri dahili olarak yapılır, bu yüzden endişelenmenize gerek yoktur.

Deno varsayılan olarak çok ilgilense de, kendi tsconfig.json dosyanızı kullanarak yapılandırmanın üzerine yazabilirsiniz:
 

deno run -c tsconfig.json [your-script.ts]

Varsayılan olarak bu yapılandırlamyı kullanmaktadır, bu nedenle kötü niyetli kodlama uygulamaları hemen uyarılır.


Artık NPM veya node_modules klasörü yok

Node ve Deno'nun en tartışmalı yönlerinden biride bu diyebiliriz. Deno node_modules veya  NPD'den  tamamen kurtulmaya karar verdi.

Peki, Deno bunun yerine ne kullanacak :
 

import * as log from "https://deno.land/std/log/mod.ts";

İşte bu kadar basit :) 

Artık kendi merkezi deponuza sahip olmanıza gerek yok, ancak kontrol sahibi olmadığınız 3. taraf kaynaklardan modül içe aktardığınızda, sizi açık ve açıkta bıraktığınızdan, bu uygulamaya dikkat etmelisiniz.

Aslında iyi olan tarafı artık modüllerin listesi veya URL adresleri basitleştirildi diyebiliriz. Ancak sürüm takibi veya sürüm vermenin nasıl olacağını sorduğunuzu duyar gibiyim. 

Artık URL adreslerinde paket sürümü verebileceksiniz. Basit ve kullanışlı gibi görünüyor. 
Mesela ; 
 

export { assert } from "https://deno.land/[email protected]/testing/asserts.ts";
export { green, bold } from "https://deno.land/[email protected]/fmt/colors.ts";

Daha ayrıntılı bilgiler edindikce makalemi zenginleştireceğim ancak şimdilik söylebileceklerimin özetine gelecek olursak; 

Node.js de eksik görülen veya hatalı görülen bir çok şeyin değişeceğini ancak genel anlamda yazımda bir değişiklik beklenmediğini söyleyebilirim. Bunun yanında güvenlik ön plana çıktığında kesinlikte Done Node.js'yi geçeceğe benziyor en azından biz geliştiricileri daha az yoracak bu konuda. 

Şimdilik esenle kalın...

#javascript #node.js #Deno