Node.js: Konsoldan Giriş

Node.js: Konsoldan Giriş

Node.js'i herhangi bir argüman kullanmadan başlatırsanız, REPL komut satırını göreceksiniz.

Örnek


gy:bin gy$ node 
>

Burada JavaScript kodlarını çalıştırabilirsiniz ancak tarayıcı tarafındaki geliştiriciler, büyük ihtimalle konsola bilgi yazma ya da hata ayıklama (debug) işlemleriyle ilgili olarak console.log komutu ile ilgilenecektir. Aşağıda console nesnesi metotları listelenmiştir:
  • console.log([data], [...])
  • console.info([data], [...])
  • console.error([data], [...])
  • console.warn([data], [...])
  • console.dir(obj)
  • console.time(label)
  • console.timeEnd(label)
  • console.trace(label)
  • console.assert(expression, [message])
Aşağıda bu metotlar hakkında pratik bilgiler vereceğiz.

console.log([data], [...])

console.log() metodu stdout dosyasına yeni bir satır açarak yazma işlemini gerçekleştirir. C'deki printf() fonksiyonuna benzer şekilde çok sayıda argüman da alabilir.

Örnek

Log.js adlı programı aşağıdaki gibi oluşturunuz:

console.log("Wolfgang Amadeus Mozart");
console.log("Fiyat= "+4000+"    miktar=   "+67);

Kodu çalıştırdığınızda aşağıdaki çıktıyı elde edeceksiniz:

gy:bin gy$ node log.js
Wolfgang Amadeus Mozart
Fiyat= 4000    miktar=   67

Console.log() fonksiyonuyla yazdırma işlemi esnasında isterseniz format bilgisi kullanabilirsiniz. Aşağıdaki tabloda bu konuda bilgi verilmektedir:
BiçimAnlamı
%sString türü veri formatı
%dTamsayı türü veri formatı
%jJson veri formatı

Örnek kod


var ad = 'ayse okan',
            yas= 25,
            ilg_bol= {
               bolum1: 'satis',
               bolum2: 'pazarlama'};
            console.log('ad...%s,'
            +'\n'+ 'yas.... %d,'
            +'\n'+ 'ilgilendigi bolumler...%j',
 ad, yas, ilg_bol);

Örnek kodun çıktısı


gy:bin gy$ node log.js
ad...ayse okan,
yas.... 25,
ilgilendigi bolumler...{"bolum1":"satis","bolum2":"pazarlama"}

Console.log() fonksiyonuyla yazdırma işlemi esnasında isterseniz format bilgisi kullanabilirsiniz. Aşağıdaki tabloda bu konuda bilgi verilmektedir:
BiçimAnlamı
%sString türü veri formatı
%dTamsayı türü veri formatı
%jJson veri formatı

Örnek kod


var ad = 'ayse okan',
            yas= 25,
            ilg_bol= {
               bolum1: 'satis',
               bolum2: 'pazarlama'};
            console.log('ad...%s,'
            +'\n'+ 'yas.... %d,'
            +'\n'+ 'ilgilendigi bolumler...%j',
 ad, yas, ilg_bol);

Örnek kodun çıktısı


gy:bin gy$ node log.js
ad...ayse okan,
yas.... 25,
ilgilendigi bolumler...{"bolum1":"satis","bolum2":"pazarlama"}

console.info([data], [...])

İşlevi console.log() fonksiyonuyla aynıdır.

Örnek


 var ad = 'ayse okan',
            yas= 25,
            ilg_bol= {
               bolum1: 'satis',
               bolum2: 'pazarlama'};
            console.info('ad...%s,'
            +'\n'+ 'yas.... %d,'
            +'\n'+ 'ilgilendigi bolumler...%j',
 ad, yas, ilg_bol);

Örnek kodun çıktısı


gy:bin gy$ node log.js
ad...ayse okan,
yas.... 25,
ilgilendigi bolumler...{"bolum1":"satis","bolum2":"pazarlama"}

console.error([data], [...])

console.error() metodu, aynen console.log metodu gibi çalışır. Tek fark, çıktının stdout yerine stderr ortamına verilmesidir. stderr ortamına yazma, daima senkron işlem ile olduğu için console.error fonksiyonunun kullanıldığı fonksiyonlar ya da stderr ortamı ile çalışan diğer fonksiyonlar, yazma işlemi bitene kadar işleminizi bloke edecektir.
Bu metot hata mesajlarının yazdırılması için uygundur; fakat aşırı kullanılması işleminizi çok yavaşlatacaktır.

Örnek kod

Aşağıdaki kodu err.js adı ile saklayın ve çalıştırın.

var error = new Error('yeni akim');
console.error( error.stack );

Programın çalışması sonucunda aşağıdaki hata mesajlarını alacaksınız:

Örnek kodun çıktısı


gy:bin gy$ node err.js
Error: yeni akim
    at Object.<anonymous> (/usr/local/bin/err.js:1:75)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3

console.warn([data], [...])

console.warn() metodu, console.error() metodu ile aynıdır. Aşağıdaki örnekte 'fs' modülü, belirli bir dosyayı açmak için kullanılıyor. Dosya başarı ile açılırsa, console.log() fonksiyonu bir mesaj yazıyor; eğer bir hata oluşursa, console.warn() metodu ile uyarı, stderr ortamına yazılıyor.

Örnek kod


var fd = require("fs");
        var yol= "dosya.txt";
        fd.open(yol, "r", function(err, fd){
        if (err){
        console.warn(err);
        }
        else{
        console.log("DOSYA BASARI ILE ACILDI..." + yol);
        }
        })

Örnek kodun çıktısı

dosya.txt mevcut olduğu için program başarıyla çalışmış ve aşağıdaki çıktıyı vermiştir:

gy:bin gy$ node err.js
DOSYA BASARI ILE ACILDI...dosya.txt

Örnek kodun çıktısı 2

Yukardaki örnek kodun ikinci satırını, var yol= "y.txt"; şeklinde değiştirin ve yeniden çalıştırın. Bu kez aşağıdaki çıktıyı alacaksınız:

gy:bin gy$ node err.js
{ [Error: ENOENT, open 'y.txt'] errno: 34, code: 'ENOENT', path: 'y.txt' }

y.txt mevcut olmadığı için bu uyarı mesajı yazılmıştır.

console.dir(obj)

stdout ortamına bilgi yazar; console.log'a benzer.

Örnek kod


var fd = require("fs");
        var yol= "dosya.txt";
        fd.open(yol, "r", function(err, fd){
        if (err){
        console.warn(err);
        }
        else{
        console.dir("DOSYA BASARI ILE ACILDI..." + yol);
        }
        })

Örnek kodun çıktısı


gy:bin gy$ node err.js
'DOSYA BASARI ILE ACILDI...xx.txt'

console.time(etiket)

console.time() metodu bir kronometreyi başlatır. Bir işlemin ne kadar sürdüğünü izlemek için kullanılabilir. Belirli bir string türü etiket kronometrenin başlangıç noktasını simgeler.

console.timeEnd(etiket)

console.timeEnd() fonksiyonu, console.time() metodu ile başlatılan kronometreyi durdurur.

Örnek kod: console.time() ve console.timeEnd()


console.time('kronometre1');
        var top = 0;
        for (var x=1; x<=20000; x++)
        {
            top  += x;
        }
        //console.log('TOPLAM='+top);
        console.log('TOPLAM(!+..20000) ICIN GECEN ZAMAN...');
        console.timeEnd('kronometre1');

Örnek kodun çıktısı


gy:bin gy$ node err.js TOPLAM(!+..20000) ICIN GECEN ZAMAN... kronometre1: 2ms

console.trace(etiket)

console.trace() metodu, stderr ortamına yazan yığının (stack) o andaki pozisyonunu gösterir.

Örnek kod


> console.trace()

Örnek kodun çıktısı

Trace
    at repl:1:10
    at REPLServer.self.eval (repl.js:110:21)
    at Interface.<anonymous> (repl.js:239:12)
    at Interface.emit (events.js:95:17)
    at Interface._onLine (readline.js:202:10)
    at Interface._line (readline.js:531:8)
    at Interface._ttyWrite (readline.js:760:14)
    at ReadStream.onkeypress (readline.js:99:10)
    at ReadStream.emit (events.js:98:17)
    at emitKey (readline.js:1095:12)
undefined
>

Örnek kod


> console.trace('deneme.js')

Örnek kodun çıktısı


Trace: deneme.js
    at repl:1:10
    at REPLServer.self.eval (repl.js:110:21)
    at Interface.<anonymous> (repl.js:239:12)
    at Interface.emit (events.js:95:17)
    at Interface._onLine (readline.js:202:10)
    at Interface._line (readline.js:531:8)
    at Interface._ttyWrite (readline.js:760:14)
    at ReadStream.onkeypress (readline.js:99:10)
    at ReadStream.emit (events.js:98:17)
    at emitKey (readline.js:1095:12)
undefined
>

console.assert(ifade, [mesaj])

console.assert() metodu, bir ifadenin doğru olup olmadığını test eder. İfade false olarak hesaplanırsa hata mesajı verir.

Örnek kod


> console.assert(3<3,'ESITLIK');

Örnek kodun çıktısı


AssertionError: ESITLIK
    at Console.assert (console.js:102:23)
    at repl:1:9
    at REPLServer.self.eval (repl.js:110:21)
    at repl.js:249:20
    at REPLServer.self.eval (repl.js:122:7)
    at Interface.<anonymous> (repl.js:239:12)
    at Interface.emit (events.js:95:17)
    at Interface._onLine (readline.js:202:10)
    at Interface._line (readline.js:531:8)
    at Interface._ttyWrite (readline.js:760:14)
>

Örnek kod


> console.assert(3==3,'ESITLIK');

Örnek kodun çıktısı


undefined

Yorumlar

Bu blogdaki popüler yayınlar

İç İçe Döngüler

CSS Bir Elemanın Genişliği ve Yüksekliği

JavaScript Dilinde Fonksiyon Çağırma Teknikleri