Web Programlama

Web Programlama

DERS PROGRAMI
Web Programlama 401 Ders Programı

Node.js Global Nesneler

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

Node.js, yapısal olarak içine yerleştirilmiş bir grup global belirticiye (identifier) sahiptir. Bu nesneler tüm modüllerde kullanılabilir. Bunlardan bazıları gerçekten global nesnelerdir ve herhangi bir yerden erişilebilirler; diğerleri ise modül düzeyinde her modülde mevcutturlar. Aşağıda bunların bir listesi verilmiştir:

  • global
  • console
  • process
  • Class: Buffer
  • require()
    • require.resolve()
    • require.cache
  • __filename
  • __dirname
  • module
  • exports
  • setTimeout(cb, ms)
  • clearTimeout(t)
  • setInterval(cb, ms)
  • clearInterval(t)

 

global

global namespace'tir. Bu namespace'e bir özellik atanırsa, icra esnasında global olarak görünür özellik olur. Tipi, nesnedir (object). Tarayıcıda en üst düzey özellik, global kapsamlıdır. O nedenle tarayıcıda, var degisken_adi şeklinde tanımlanan değişken, bir global değişken olacaktır. Bir modül içindeki var degisken_adi şeklindeki tanımsa yerel düzeyde bir değişken tanımı olacaktır.

 

console

Bu yapısal olarak mevcut (built-in) nesne, stdout ve stderr dosyalarını yazdırmak için kullanılır. Nesne pek çok metoda sahiptir. Nesne tipindedir.

 

Örnek

> console.log("KONSOLA BİR YAZI YAZMAK");
KONSOLA BİR YAZI YAZMAK 
undefined
>

 

 

process

Process nesnesi global bir nesnedir. Mevcut node işlemiyle etkileşim sağlar, herhangi bir yerden erişilebilir. Tipi nesnedir.

 

Örnek

Aşağıdaki örnekte işlem sona ereceği zaman exit olayı ateşleniyor:

var fs = require('fs');
var icerik = fs.readFileSync("gyDosya.txt", "utf8");
console.log(icerik);
console.log('Dosya okunuyor...');
        process.on('exit', function () {
        var content = fs.readFileSync("gyDosya.txt", "utf8");
         });

 

Yukardaki deneme.js kodunu,

node deneme.js

komutuyla çalıştırınca aşağıdaki çıktıyı elde edeceksiniz:

gy:bin gy$ node deneme.js
Dosya icerigi

Dosya okunuyor...
gy:bin gy$

 

Buffer sınıfı (class)

Buffer sınıfı da globaldir. Binary veriyle doğrudan işlem yapabilir. Fonksiyon tipindedir.

 

Örnek

> var tampon=new Buffer([55,90,23,11,7,9]);
undefined
> console.log(tampon);
<Buffer 37 5a 17 0b 07 09>
undefined
>

Verilerin hexadecimal (on altılık) olarak listelendiğine dikkat ediniz. Hexadecimal veri aslında binary (ikili sistemde) veridir. Hatırlatma yaparsak, 16'lık bir veri, ikilik sisteme doğrudan hexadecimal karakterlerin ikilik karşılıklarını yerleştirerek dönüştürülür:

Onluk On altılık (Hexadecimal) Onluk On altılık
0 0 8 8
1 1 9 9
2 2 10 A
3 3 11 B
4 4 12 C
5 5 13 D
6 6 14 E
7 7 15 F

(5AE)16=(010110101110)2

 

require()

require() fonksiyonu da Node.js içine yerleştirilmiş (built-in) bir fonksiyondur; ayrı dosyalarda bulunan modülleri programın içine katmak için kullanılır. Global değildir her modül için yereldir. Fonksiyon tipindedir.

 

Örnek:

var fs = require('fs');
var content = fs.readFileSync("gyDosya.txt", "utf8");
console.log(content);
console.log('Dosya okunuyor...');
        process.on('exit', function () {
        var content = fs.readFileSync("gyDosya.txt", "utf8");
         });

'fs' (file system) modülü, program içine katılıyor.

 

require.resolve()

require.resolve() bir modülün konumunu aramak için kullanılır ve döndürdüğü değer, bulunan dosya adıdır.

 

Örnek

> require.resolve('sys');
'sys'
> require.resolve('fs')
'fs'
> 

Her iki modül de node içinde yüklü olduğu için aynı dizindedir ve sadece isimleri listelenmiştir.

> require.resolve('mongoDB')
'/usr/local/bin/node_modules/mongoDB/lib/mongodb/index.js'
> 

MongoDB farklı bir dizin içinde olduğu için, onun yolunu vermiştir.

 

require.cache

Modüller cache bellekte bu nesne içinde saklanır. Bir modülü, bu nesne içinden silmek için ilgili anahtar değerini kullanmak gerekir. Modülü tekrar yüklemek içinse bildiğiniz gibi require() fonksiyonunu kullanmak gerekir. Nesne tipindedir.

 

Örnek

>var a=require('./gy.js').a;
Turkcell Gelecegi Yazanlar

Dosya okunuyor...
undefined
> var x=require('./gy.js');
undefined
> delete require.cache[gy]
true
>

 

__filename

_filename o esnada icra edilen dosyanın mutlak yolunu içerir. String türündedir.

 

__dirname

__dirname o esnada icra edilen dosyanın kök dizine olan yolunu belirtir. String türündedir.

 

module

O anda aktif olan modüle referans verir. Belli bir program içinde bir modülü aktif hale getirmek için require() fonksiyonunu kullanmanız gerektiğini biliyorsunuz. Global değildir, her modül için yereldir. Nesne tipindedir.

 

Örnek

> var konu;
undefined
> var fs = require('fs');
undefined
> konu = fs.readFileSync('gyDosya.txt','utf8');
'Turkcell Gelecegi Yazanlar\n'
> console.log(konu);
Turkcell Gelecegi Yazanlar

undefined
>

 

exports

module.exports’un kısa yazılışıdır. Modül ihraç etmek için kullanılır. Global değildir, her modül için yereldir.

 

Örnek

carpma.js modülünü aşağıdaki gibi oluşturun:

deneme.js modülünü de aşağıdaki gibi oluşturun:

Şimdi aa.js modülünü çalıştırın:

gy:bin gy$ node deneme.js
5*5=25

Yukarıdaki sonucu elde edeceksiniz. Burada carpma.js modülü, kare adlı fonksiyonu ihraç eder. deneme.js ise require() fonksiyonu ile bu fonksiyonu ithal eder ve kendi içinde kullanır.

 

setTimeout(cb, ms)

setTimeout fonksiyonu, mili saniye cinsinden belirlenmiş ms kadar zaman sonra cb fonksiyonunu çağırır. Zaman aralığı, 1-2,147,483,647 arasında olmalıdır. Bu aralık dışındaki değerler verilirse, 1 milisaniye olarak değiştirilir.

 

Örnek

setTimeout(function(){
console.log('Turkcell Gelecegi Yazanlar')
},10000);

Kodu çalıştırdığınızda "Turkcell Gelecegi Yazanlar" mesajı 10000 milisaniye (10 saniye) sonra ekrana gelecektir:

gy:bin gy$ node time.js
Turkcell Gelecegi Yazanlar

 

clearTimeout(t)

clearTimeout() fonksiyonu, setTimeout ile ayarlanan zaman aralığını iptal etmek için kullanılır.

 

setInterval(cb, ms)

setinterval() fonksiyonu, cb fonksiyonunu tekrarlı olarak her ms zaman aralığında çağırır. Zaman aralığı, 1-2,147,483,647 kapalı aralığı ile belirlenir. Bu aralık dışında bir sayı söz konusu olduğu zaman, zaman aralığı 1 milisaniye olarak alınır.

 

Örnek

Aşağıdaki kodu time.js adı ile oluşturun:

setInterval(function(){
console.log('Turkcell Gelecegi Yazanlar...')
}, 600);

Kodu çalıştırdığınızda her 600 milisaniyede bir "Turkcell Gelecegi Yazanlar..." mesajının yazıldığını göreceksiniz:

gy:bin gy$ node time.js
Turkcell Gelecegi Yazanlar...
Turkcell Gelecegi Yazanlar...
Turkcell Gelecegi Yazanlar...
Turkcell Gelecegi Yazanlar...
Turkcell Gelecegi Yazanlar...
Turkcell Gelecegi Yazanlar...
Turkcell Gelecegi Yazanlar...
Turkcell Gelecegi Yazanlar...

 

clearInterval(t)

clearInterval() fonksiyonu, setInterval() fonksiyonu ile kurulan kronometreyi iptal etmek için kullanılır.