Web Programlama

Web Programlama

DERS PROGRAMI
Web Programlama 401 Ders Programı

Node.js: Konsoldan Giriş

Lisans: Creative Commons 26.11.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

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çim Anlamı
%s String türü veri formatı
%d Tamsayı türü veri formatı
%j Json 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
>