mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
Mt2Hizmet 1
Mt2Hizmet
berkmenoo 1
berkmenoo
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
farkmt2official 1
farkmt2official
Hikaye Ekle

[NODE JS] REPL Ortamını Kullanarak Node.js Öğrenin

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

nodejs.png


[NODE JS] REPL Ortamını Kullanarak Node.js Öğrenin​


Merhaba arkadaşlar. Bugün Node.js'in çok kullanışlı ama yeni başlayanların genelde es geçtiği bir özelliğinden bahsedeceğim: REPL. Ben kendi tecrübemden söylüyorum, REPL'i etkin kullanmayı öğrendikten sonra kod yazma hızım ciddi şekilde arttı. Hızlı denemeler, snippet testleri, hatta bazen production'daki bir sorunu debug ederken bile REPL hayat kurtarıcı olabiliyor.

REPL Nedir?​


REPL, Read-Eval-Print-Loop kelimelerinin kısaltmasıdır. Türkçeye çevirecek olursak Oku-Değerlendir-Yazdır-Döngüsü diyebiliriz. Terminalde "node" yazdığınızda karşınıza çıkan o > işaretli ortam işte REPL'dir. Siz bir JavaScript ifadesi yazarsınız, Node.js onu okur, çalıştırır, sonucu ekrana basar ve yeni bir girdi bekler. Bu döngü sürekli devam eder.

Python kullandıysanız oradaki interactive shell'e çok benzer. Ama Node.js REPL'inin bazı ek özellikleri var. Mesela otomatik tamamlama yapabilir, son ifadenin sonucuna erişebilir, hatta çok satırlı kodlar yazabilirsiniz.

Tecrübeme göre REPL'i en çok şu durumlarda kullanıyorum: yeni bir array metodu denemek istiyorum ama dosya oluşturmak istemiyorum, bir regex'in çalışıp çalışmadığını test ediyorum, veya bir kütüphanenin belirli bir fonksiyonunun ne döndürdüğünü hızlıca görmek istiyorum. Dosya oluştur, kaydet, terminale geç, node ile çalıştır yerine direkt REPL'de deniyorum, çok daha hızlı.

REPL'e Giriş ve Temel Komutlar​


Terminal açıp "node" yazdığınızda REPL başlar. Çıkmak için .exit yazarsınız veya Ctrl+D basarsınız. Ama REPL'in gizli güçleri var ve bunları bilmek gerekiyor.

JavaScript:
// REPL'de özel komutlar (başında nokta olan komutlar)

// .help    -> Mevcut komutları listeler
// .break   -> Çok satırlı ifadeyi iptal eder (Ctrl+C de çalışır)
// .clear   -> Bağlamı temizler, değişkenleri sıfırlar
// .editor  -> Çok satırlı editör moduna geçer (Ctrl+D ile çalıştırır)
// .exit    -> REPL'den çıkar
// .save dosya.js   -> REPL oturumunu dosyaya kaydeder
// .load dosya.js   -> Bir dosyayı REPL'e yükler

// _ (alt çizgi) son ifadenin sonucunu tutar
// Örnek REPL oturumu:
// > 5 + 3
// 8
// > _ * 2
// 16
// > _.toString()
// '16'

// REPL'de çok satırlı kod yazma
// { ile başlayan bir satır yazarsanız REPL otomatik olarak
// çok satırlı moda geçer ve } ile kapatmanızı bekler

// > function topla(a, b) {
// ...   return a + b;
// ... }
// undefined
// > topla(3, 5)
// 8

// .editor komutu ile daha uzun kodlar yazabilirsiniz
// > .editor
// // Çok satırlı editör moduna girdiniz
// function fibonacci(n) {
//     if (n <= 1) return n;
//     let a = 0, b = 1;
//     for (let i = 2; i <= n; i++) {
//         [a, b] = [b, a + b];
//     }
//     return b;
// }
//
// for (let i = 0; i < 15; i++) {
//     console.log(`F(${i}) = ${fibonacci(i)}`);
// }
// // Ctrl+D ile çalıştır

// Tab tuşu ile otomatik tamamlama
// > Math. [Tab tuşuna basın]
// Math.__defineGetter__  Math.__defineSetter__  Math.__lookupGetter__
// Math.__lookupSetter__  Math.abs               Math.acos
// ... ve devamı

// > Array. [Tab tuşuna basın]
// Array.from    Array.isArray  Array.of
// ... ve devamı

REPL'de Modül Kullanımı​


REPL'in güzel taraflarından biri de Node.js'in dahili modüllerini anında kullanabilmeniz. require ile bir modülü yükleyip hemen test edebilirsiniz. Bu özellikle fs, path, os gibi modülleri keşfederken çok işe yarıyor.

Geçen gün production'daki bir sunucuya SSH ile bağlanıp Node.js REPL'ini açtım ve dosya sisteminde bazı kontroller yapmam gerekiyordu. REPL olmasa ayrı bir script yazıp çalıştırmam gerekirdi, REPL sayesinde saniyeler içinde halledildi. Bu tür durumlarda REPL gerçekten hayat kurtarıyor.

JavaScript:
// REPL'de modül kullanım örnekleri

// Dosya sistemi modülü
const fs = require('fs');
const path = require('path');
const os = require('os');
const crypto = require('crypto');

// Mevcut dizindeki dosyaları listele
fs.readdirSync('.').forEach(dosya => {
    const bilgi = fs.statSync(dosya);
    const boyut = (bilgi.size / 1024).toFixed(2);
    const tip = bilgi.isDirectory() ? 'KLASÖR' : 'DOSYA';
    console.log(`[${tip}] ${dosya} - ${boyut} KB`);
});

// Rastgele bir şifre oluştur
function sifreOlustur(uzunluk = 16) {
    const karakterler = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%';
    let sifre = '';
    const rastgele = crypto.randomBytes(uzunluk);
    for (let i = 0; i < uzunluk; i++) {
        sifre += karakterler[rastgele[i] % karakterler.length];
    }
    return sifre;
}

console.log('Rastgele Şifre:', sifreOlustur());
console.log('Kısa Şifre:', sifreOlustur(8));
console.log('Uzun Şifre:', sifreOlustur(32));

// Hash oluşturma
const metin = 'Node.js REPL harika!';
const md5 = crypto.createHash('md5').update(metin).digest('hex');
const sha256 = crypto.createHash('sha256').update(metin).digest('hex');
console.log(`MD5: ${md5}`);
console.log(`SHA256: ${sha256}`);

// Path modülü ile yol işlemleri
const dosyaYolu = '/home/user/projeler/app/src/index.js';
console.log('Dizin:', path.dirname(dosyaYolu));
console.log('Dosya adı:', path.basename(dosyaYolu));
console.log('Uzantı:', path.extname(dosyaYolu));
console.log('Parse:', JSON.stringify(path.parse(dosyaYolu), null, 2));

REPL'i Özelleştirme​


Node.js REPL'ini kendi ihtiyaçlarınıza göre özelleştirebilirsiniz. Mesela ev dizininizde .node_repl_history dosyası REPL geçmişinizi tutar. Ayrıca özel bir REPL başlatıcı script yazabilirsiniz. Ben kendim için sık kullandığım yardımcı fonksiyonları içeren bir script yazdım ve REPL'i her açtığımda bunu yüklüyorum.

Ha bu arada, bir tüyo vereyim: REPL'de bir değişkenin tipini anlamak için typeof, bir nesnenin yapısını görmek için JSON.stringify(obj, null, 2) kullanabilirsiniz. Ya da console.dir ile nesnenin detaylı yapısını görebilirsiniz. Bu üç yöntem REPL'de keşif yaparken en çok işinize yarayacak şeyler.

Son olarak belirtmeliyim ki REPL sadece öğrenme aracı değil. Production ortamlarında debug, hızlı prototipleme, veri dönüşüm scriptleri ve benzeri birçok alanda aktif kullanılıyor. Benim iş akışımda REPL'in yeri çok büyük. Kolay gelsin, sorularınız varsa yanıtlayayım.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst