19 MAYIS 2020
SALI
12.31
Youtube
Youtube kanalım açıldı! Daha detaylı ve güncel konu anlatımları için takip etmeyi unutmayın.
Deno Kurulum & İlk Adımlar & Örnekler

Buradaki konuların anlatımlarını yaparken Deno'nun kendi kılavuzundan yararlanacağız.

Kurulum

Deno'nun herhangi bir dış bağımlılığı bulunmadığı için Deno'yu macOS, Linux ve Windows üzerinde çalıştırabilmekteyiz. Aşağıda shell kullanılarak tüm cihazlar için yapılacak yöntemleri vereceğim fakat tüm kurulum yöntemleri için buraya göz atabilirsiniz.

macOS ve Linux için;

curl -fsSL https://deno.land/x/install/install.sh | sh

Windows için;

iwr https://deno.land/x/install/install.ps1 -useb | iex

Kurulum tamamlandıktan sonra başarılı olup olmadığını anlamak için terminale deno --version yazabilirsiniz.

Buradaki versiyonları görüntüleyebiliyorsanız kurulum başarıyla tamamlanmıştır. Artık Deno'ya ait help komutlarını da deno help ile görebilirsiniz.

Ortam Kurulumu

Ortam kurulumları aslında bir uygulamayı en verimli şekilde kullanabilmek için ortamın hazırlanmasıdır. Ortamdan kastedilen otomatik tamamlamalar, ortam değişkenlerinin ayarlanması, editör veya IDE'nin ayarlanması olarak anlaşılabilir.

Özellikle editörlere değinmek istiyorum. Henüz çok yeni olduğu için VS Code için bir beta versiyonu olan plugin yer almaktadır. Bu eklentiye buradan ulaşabilirsiniz.

Başlıyoruz!

Artık nihayet ufak tefek kodlar yazmaya başlayabiliriz. Burada basit bir "Hello World!" örneği ile başlayacağız. Deno'nun temel olarak url üzerinden de gelen tüm javascript kodlarını derleyip çalıştırabildiğini biliyoruz. Bu sebeple ben örnekleri hazırladıktan sonra bazı noktalarda sizlerle linkler de paylaşmaya çalışacağım. Başlangıç olarak ekrana bir "Hello!" metnini yazdırmaya çalışalım. Bunu sıfırdan başlayan birine adım adım anlatıyor gibi yapacağım.

Deno derslerini yazarken tüm dersleri bir klasör üzerinden hazırlayacağım. Dolayısıyla ben "deno" adında bir klasör açıyorum. Daha sonra console uygulamasında bu klasöre gidiyorum. (cmder tercih edeceğim)

  1. Yeni bir dosya oluşturuyorum: hello-world.js
  2. İçerisine "console.log('Hello World!');" yazıp kaydediyorum.
  3. Console'da deno run hello-world.js yazıyorum ve

URL Kullanmak

Yukarı yaptığımız aslında bir js dosyası oluşturup bu dosyayı console üzerinde çalıştırmaktı. Bunu yaparken npm mantığında başka üretilmiş yapıları projemizde kullanmak istiyorsak Deno bunları kurmamıza gerek olmadan doğrudan link ile çalıştırabiliyor. Dersler boyunca ilerleyeceğimiz bazı noktalarda bu dosyaları ben de sizlerle paylaşmaya çalışacağım. Örneğin yukarıdaki örneğimizi doğrudan şu şekilde de çalıştırabiliriz:

deno run https://deno.merttopuz.com/examples/hello-world.js

Yine aynı sonucu şu şekilde elde edeceğiz:

Argümanlar

Console uygulamalarında bilindiği gibi argümanları kullanabiliyoruz. Deno'da da console'da bir uygulama çalıştırırken argümanları alabiliriz. Örneğin az önceki Hello World! uygulamamızı biraz değiştirelim:

if(Deno.args[0]) {
    console.log('Hello ' + Deno.args[0] + '!');
} else {
    console.log('Hello Everyone!')
}

Burada Deno.args ile console'dan gelen değişkenlerin hepsini alabiliyoruz. Örneğimizde eğer ilk değişken gelirse onu isim olarak kabul ediyoruz. Örneğin Mert olursa argümanımız "Hello Mert!" şeklinde bir sonuç üretiyoruz. Öte yandan eğer bir argüman girilmemişse "Hello Everyone!" çıktısını üretiyoruz.

İstersek https://deno.merttopuz.com/examples/hello.js buradaki örneği de kullanabiliriz:

deno run https://deno.merttopuz.com/examples/hello.js
deno run https://deno.merttopuz.com/examples/hello.js Mert

Çıktımız artık bu şekilde olabilir:

HTTP İsteği

Temel olarak bir sunucudan veri alma işlemi için kullanmaktayız. Uzaktaki bir yerde duran verileri almamıza yarayan bir program yazabiliriz. Senaryomuzda buradaki dosyada yer alan örnek json'u almaya çalışalım. Dosya içeriğimiz şu şekilde:

{
    "site": "merttopuz.com",
    "author": "Mert Topuz",
    "version": "2.0"
}

Bu dosyaya console üzerinden ulaşıp verilere erişmeye adım adım bakalım.

  1. Yeni bir dosya oluşturuyorum: site-data.js
  2. Dosya içeriğine tek tek yazarak bakalım.
  3. Öncelikle console üzerinden bir link göndereceğiz. Bu link yukarıdaki sunucu linkimiz olsun. Demek ki Deno.args[0] ile bu linki elde etmeliyiz.
    const url = Deno.args[0];​
  4. Şimdi bu url'e bir istekte bulunup yanıtı bekleyelim. Gelen cevabı da response değişkenine aktaralım.
    const response = await fetch(url);​
  5. Gelen response değerinin Body'sini alıp body adında bir değişkene atmak için ArrayBuffer'dan yardım alıyoruz ve depolamak için Uint8Array'e dönüştürüyoruz.
    const body = new Uint8Array(await response.arrayBuffer())​
  6. Son olarak Deno.stdout.write() ile yazdıralım.
    await Deno.stdout.write(body);
  7. Son olarak kodlarımıza genel bir baktığımızda;
    const url = Deno.args[0];
    const response = await fetch(url);
    
    const body = new Uint8Array(await response.arrayBuffer())
    await Deno.stdout.write(body);​
  8. Programımızı şöyle çalıştırdığımızda:
    deno run site-data.js https://deno.merttopuz.com/data/site.json​

    Veya dilerseniz şu şekilde doğrudan çalıştırabilirsiniz:

    deno run https://deno.merttopuz.com/examples/site-data.js https://deno.merttopuz.com/data/site.json

    Çıktımız şöyle olacaktır:



    Aslında hata mesajından da anlaşıldığı gibi burada flag kullanmamız gerektiğini söylüyor. Tam olarak şurada ne demiştik: Deno güvenliğe oldukça önem veriyor. Yani şuanda ağ erişimine iznimiz yok. Bunun için --allow-net şeklinde ağa erişebilmesine izin vermemiz gerektiğini bize hatırlatıyor. O aman beklediği izni verdiğimizde, yani şöyle çalıştırdığımızda, aldığımız sonuca bakalım:
    deno run --allow-net site-data.js https://deno.merttopuz.com/data/site.json​
    İşte çıktımız!

Dosya Erişimi

Zaman zaman localde var olan bir dosyaya erişmek ve üzerinde değişiklik yapmak isteyebiliriz. Örneğin site.json dosyamızın localde olduğunu ve ona erişmek istediğimizi varsayalım.

site.json dosyamız üstteki örneğimizdeki (buradaki) dosyamız ile aynı içeriğe sahiptir.

Yine adım adım kodumuzu yazalım.

  1. read.js dosyamızı açalım ve "site.json" dosyamızı açmasını, file adında bir değişkene içeriğini atamasını söyleyelim:
    const file = await Deno.open('site.json');​
  2. Aldığı içeriği stdout'da yazmasını sağlamak için Deno.copy() kullanıyoruz.
    await Deno.copy(file, Deno.stdout);​
  3. Tabii ki açılan her dosya kapatılmalıdır. Bu sebeple file.close()'u unutmuyoruz.
    file.close();​
  4. Son olarak kodlarımıza genel bir bakış atarsak:
    const file = await Deno.open('site.json');
    await Deno.copy(file, Deno.stdout);
    file.close();​
  5. Ve sıra çalıştırmakta! Burada tekrar yukarıdaki hatanın benzerini sizlere göstermeyeceğim. Fakat anlayacağınız üzere yine bir erişim izni vermek zorundayız. Bu sebeple kullanacağımız flag bu kez --allow-read olmalıdır. Yani;
    deno run --allow-read read.js​
    şeklinde yazdığımızda;



    Çıktımızı elde ettik!

Kaynaklar

YORUMLAR 0
Bu konuya henüz kimse yorum yapmadı.
İlk yorumu sen yapmak ister misin?
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et