Deno
Bildiğimiz üzere dünya üzerinde en çok kullanılan javascript teknolojilerinden birisi nodejs. Çoğu zaman şirketler, küçük kuruluşlar, bireysel çalışanlar ve hatta bu işi sırf hobi için yapan insanlar javascript kodlarken nodejs'ten yararlanıyor. Deno ise nodejs'in eksiklerini gidermek için ortaya çıkarılan yeni bir teknoloji.
NodeJS ' in kurucusu olan Ryan Dahl tarafından 2018 yılında piyasaya sürüldü. Kendisi JSConf EU programında nodejs'in eksiklerini vurgulayarak deno'dan bahsetmişti.
Deno Nedir ?
Deno, rust programlama diline ve V8 javascript motoruna dayanan javascript ve typescript için bir çalıştırma ortamıdır. Nodejs yaratıcısı Ryan Dahl 2018 yılında yaptığı bir konuşmada tarafınca NodeJS'te 10 eksik bulduğunu dile getirmiştir. Deno, nodejs'in eksiklerini gidermek için ortaya çıkmış alternatif bir çalıştırma ortamıdır.
Şimdi nodejs'teki bu 10 eksikten bazılarını ele alalım.
1 - Güvenlik
V8 javascript motoru güvenli bir çalışma ortamı sunmaktadır. Ama nodejs güvenlik konusunda eksik kalmaktadır. Nedeni ise nodejs'in kolayca sistem komutları çalıştırabilmesidir. Dosya okuma, yazma , silme, değiştirme gibi...
2 - Promise
Nodejs ile deno arasındaki farkı anlatmadan önce promiselerin ne olduğuna değinelim.
Promise yapısı işlemlerde kullandığımız sonucu temsil eden ve sonuca göre fonksiyon yazmamızı sağlayan bir yapıdır. Bu yapı resolve ve reject adında iki değer alır. Bunlar yapılan işlemin başarılı olma ya da olmama durumlarını simgeler. Örneğin dosyayı okumak istediğinizi düşünün. Eğer dosya başarılı bir şekilde okunursa resolve değerini alır ve başarılı işlem için yazdığımız fonksiyon çalıştırılır. Ama eğer başarılı değilse reject değerini alır ve bu seferde başarısız, hatalı olan işlem için yazılan fonksiyon çalıştırılır.
Nodejs bu yapıya ilk çıktıktan kısa bir süre sonra sahip oldu ama sonrasında bu yapı nodejs'ten kaldırıldı. Promise yapısı nodejs'te yerini callback fonksiyonlarına bıraktı.
3 - node_modules
Takip ettiğim kaynakta 10 eksik arasından package.json, index.js, require fonksiyonu ve GYP build sisteminden bahsedilmiş. İlk üçünü bu konuda yer vermeyeceğim, sonuncu olan GYP build sistemi ise tam olarak anlamadığımdan yanlış bilgi vermemek adına ondan bahsetmicem.
Deno Kurulum
Oldukça basit ve küçük bir kurulum yapıcaz. Nodejs ile arasındaki farklardan biriside nodejs gibi bir set-up dosyasının bulunmaması.
Windows için :
Kod:
Scoop : scoop install deno
[LEFT]Choco : choco install deno
Powershell : irm https://deno.land/install.ps1 | iex
Linux ve MacOS için ;
Kod:
Shell : curl -fsSL https://deno.land/x/install/install.sh | sh
MacOS : brew install deno
Şimdi ise deno'nun bu sorunlara çözüm yöntemlerini ve deno'nun bazı özelliklerini anlatalım.
1 - Güvenlik
Deno, nodejs'in aksine sistem komutları çalıştırabilmek, dosyalara erişebilmek için kullanıcıdan yani bizden izin ister. Bu sayede kullanıcı için güvenlik sağlanmış olur. Örneğin bir dosyanın içeriğini okumak istediğimizde şöyle bir ekranla karşılaşırız :
Görüldüğü üzere bizden dosyayı okumak için izin istiyor.
Görüldüğü üzere bizden dosyayı okumak için izin istiyor.
2 - Modüller
Deno'da modüller node_modules gibi bir dizin altında depolanmamakta. Onun yerine modüller urller aracılığı ile projeye dahil ediliyor. Nasıl yani derseniz, css ' te @import url metodunu kullanarak google font gibi bir yerden fontu indirmeden kullanmayı örnek verebilirim.
Gördüğünüz gibi komut satırında renkli yazı yazdırmak için kullandığım modülü herhangi bir paket yöneticisi ile indirerek kullanmak yerine url ile projeme dahil ettim. Peki bu urller bozuk olursa veya herhangi bir bağlantı sorunu olursa ne olacak derseniz, deno bize dosya ile modül import etme özelliğinide sunmakta. Ayrıca url ile import ettiğimiz modüllerin bir kaydını cache'sinde tutmakta.
Gördüğünüz gibi komut satırında renkli yazı yazdırmak için kullandığım modülü herhangi bir paket yöneticisi ile indirerek kullanmak yerine url ile projeme dahil ettim. Peki bu urller bozuk olursa veya herhangi bir bağlantı sorunu olursa ne olacak derseniz, deno bize dosya ile modül import etme özelliğinide sunmakta. Ayrıca url ile import ettiğimiz modüllerin bir kaydını cache'sinde tutmakta.
3 - Typescript Desteği
Deno typescript kodlarını çalıştırmak için kendi içinde bir typescript derleyicisi ile beraber gelmekte. Yani typescript kodunu çalıştırmak için ayrı bir derleyiciye ihtiyacınız yoktur. Typescript haricinde normal javascript ile de projelerinizi geliştirebilirsiniz.
4 - Geliştiri Araçları
Deno kendi içinde birçok geliştirici aracı ile gelmekte. Bunlar deno bundle, debugger, dependency inspector ( deno info ), documentation generator ( deno doc ), formatter ( deno fmt ), test runner ( deno test ) gibi... Daha fazla bilgi için :
Deno
Deno