Node.js Sözlüğü
Node.js Sözlüğü, Node.js ekosisteminde ileri düzey geliştiriciler için hazırlanmış kapsamlı bir referans kaynağıdır. Bu sözlük, Node.js’in temel ve ileri düzey kavramlarını tanımlar; sözdizimi, veri yapıları, algoritmalar ve nesne yönelimli programlama (OOP) prensiplerini detaylı bir şekilde açıklar. Node.js Sözlüğü, aynı zamanda gerçek dünya uygulamaları için pratik örnekler ve çözüm desenleri sunarak, geliştiricilerin uygulamalarını daha verimli, güvenli ve ölçeklenebilir bir şekilde inşa etmelerine yardımcı olur.
Node.js Sözlüğü, uygulama geliştirme sırasında sıkça karşılaşılan hatalardan kaçınmayı sağlar; bellek sızıntıları, hatalı hata yönetimi ve verimsiz algoritmalar gibi sorunlara karşı rehberlik eder. Geliştiriciler, bu sözlüğü HTTP sunucuları, dosya sistemi yönetimi, event-driven programlama, API entegrasyonu ve asenkron veri işleme gibi çeşitli senaryolarda kullanabilirler. Ayrıca Promises ve async/await gibi modern asenkron tekniklerin doğru kullanımını öğrenirler.
Bu referans, okuyucuya Node.js’in event loop yapısı, modülerlik, stream kullanımı ve güvenlik uygulamaları hakkında derinlemesine bilgi sunar. Node.js Sözlüğü ile geliştiriciler, hem teorik hem de pratik bilgilerini pekiştirerek karmaşık projelerde daha sağlam ve sürdürülebilir çözümler üretebilirler.
Temel Örnek
textconst http = require('http');
class Kullanici {
constructor(ad, yas) {
this.ad = ad;
this.yas = yas;
}
selamla() {
return `Merhaba, ben ${this.ad} ve ${this.yas} yaşındayım.`;
}
}
const kullanicilar = [
new Kullanici('Ayşe', 28),
new Kullanici('Mehmet', 35)
];
const sunucu = http.createServer((req, res) => {
if (req.url === '/kullanicilar') {
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(JSON.stringify(kullanicilar.map(k => k.selamla())));
} else {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Sayfa bulunamadı');
}
});
sunucu.listen(3000, () => console.log('Sunucu 3000 portunda çalışıyor'));
Yukarıdaki Node.js kodu, Node.js Sözlüğü’nde belirtilen temel kavramları gösterir. http.createServer fonksiyonu, gelen HTTP isteklerini yöneterek Node.js’in event loop yapısını kullanır. Kullanici sınıfı, nesne yönelimli programlamayı (OOP) temsil eder ve ad ile yas özelliklerini kapsüller. kullanicilar dizisi, veri yapılarının kullanımını gösterir. JSON.stringify fonksiyonu, JavaScript objelerini JSON formatına dönüştürerek istemcilerle veri paylaşımını sağlar. Bu örnek, bellek sızıntılarını önler, hataları yönetir ve Node.js’in modüler yapısını etkin biçimde kullanır. Böylece geliştiriciler, HTTP sunucuları, veri yönetimi ve sınıf kullanımı konularında sağlam bir temel öğrenirler.
Pratik Örnek
textconst fs = require('fs');
const path = require('path');
class DosyaYoneticisi {
constructor(dizin) {
this.dizin = dizin;
}
dosyalariListele() {
try {
return fs.readdirSync(this.dizin);
} catch (err) {
console.error('Dizin okunamadı:', err.message);
return [];
}
}
dosyaOku(dosyaAdi) {
try {
const dosyaYolu = path.join(this.dizin, dosyaAdi);
return fs.readFileSync(dosyaYolu, 'utf8');
} catch (err) {
console.error('Dosya okunamadı:', err.message);
return null;
}
}
}
const yonetici = new DosyaYoneticisi('./veri');
console.log('Dizin içeriği:', yonetici.dosyalariListele());
console.log('İlk dosyanın içeriği:', yonetici.dosyaOku(yonetici.dosyalariListele()[0]));
Advanced Node.js Implementation
textconst EventEmitter = require('events');
class GorevYoneticisi extends EventEmitter {
constructor() {
super();
this.gorevler = [];
}
gorevEkle(gorev) {
this.gorevler.push(gorev);
this.emit('gorevEklendi', gorev);
}
gorevleriIsle() {
this.gorevler.forEach(gorev => {
try {
console.log('Görev işleniyor:', gorev.ad);
gorev.calistir();
} catch (err) {
console.error('Görev çalıştırılamadı:', err.message);
}
});
}
}
const yonetici = new GorevYoneticisi();
yonetici.on('gorevEklendi', gorev => console.log('Yeni görev eklendi:', gorev.ad));
yonetici.gorevEkle({ad: 'Görev 1', calistir: () => console.log('Görev 1 tamamlandı')});
yonetici.gorevEkle({ad: 'Görev 2', calistir: () => {throw new Error('Hata oluştu')}});
yonetici.gorevleriIsle();
Node.js Sözlüğü’ndeki en iyi uygulamalar, temiz ve okunabilir kod yazmayı, veri yapıları ve algoritmaların etkin kullanımını, OOP prensiplerini doğru uygulamayı ve asenkron işlemleri yönetmeyi içerir. Yaygın hatalar arasında bellek sızıntıları, hatalı hata yönetimi ve verimsiz algoritmalar bulunur. Debug ve optimizasyon için console.log, profiling ve heap analizleri önerilir. Performansı artırmak için non-blocking işlemler, streams ve verimli dosya/istek yönetimi kullanılmalıdır. Güvenlik açısından, giriş doğrulama, injection önleme ve veri gizliliği sağlama önemlidir. Bu uygulamalar, Node.js ile ölçeklenebilir, güvenli ve verimli uygulamalar oluşturulmasını sağlar.
📊 Kapsamlı Referans
http.createServer | HTTP sunucusu oluşturur | http.createServer(callback) | const server = http.createServer((req,res)=>{}) | Web uygulamalarında kullanılır |
---|---|---|---|---|
fs.readFileSync | Dosya okuma (senkron) | fs.readFileSync(path, encoding) | fs.readFileSync('dosya.txt','utf8') | Büyük dosyalarda önerilmez |
fs.readdirSync | Dizin içeriğini listeler | fs.readdirSync(path) | fs.readdirSync('./veri') | try/catch kullan |
path.join | Yolları birleştirir | path.join(path1,path2) | path.join(__dirname,'veri') | Platform bağımsız |
EventEmitter | Olay yönetimi | class MyEmitter extends EventEmitter{} | const emitter = new EventEmitter() | Event-driven programlama |
console.log | Konsola yazdırma | console.log(msg) | console.log('Merhaba') | Debug |
JSON.stringify | JSON’a çevirir | JSON.stringify(obj) | JSON.stringify({a:1}) | HTTP yanıtları için |
JSON.parse | JSON parse | JSON.parse(text) | JSON.parse('{"a":1}') | Request parse |
class | Sınıf tanımı | class MyClass{} | class Kullanici{} | OOP |
constructor | Sınıf yapıcısı | constructor(params){} | constructor(ad,yas){} | Örnek oluşturma |
this | Nesne referansı | this.prop | this.ad='Ayşe' | Sınıf bağlamı |
module.exports | Modül dışa aktarımı | module.exports=MyModule | module.exports=Kullanici | Modüler yapı |
require | Modül import | require('module') | const fs=require('fs') | Bağımlılık yönetimi |
setTimeout | Gecikme | setTimeout(callback,ms) | setTimeout(()=>{},1000) | Asenkron görevler |
setInterval | Aralık | setInterval(callback,ms) | setInterval(()=>{},1000) | Periyodik görevler |
Promise | Asenkron yapı | new Promise((res,rej)=>{}) | new Promise((res,rej)=>{}) | Callback hell önler |
async/await | Modern async | async function fn(){} await fn | await fetchData() | Kod okunabilirliği |
try/catch | Hata yönetimi | try{}catch(err){} | try{...}catch(e){...} | Hata önleme |
Buffer | Binary veri | Buffer.from(data) | Buffer.from('metin') | Dosya/Network |
process.env | Ortam değişkeni | process.env.VAR | console.log(process.env.PORT) | Konfigürasyon |
http.get | GET isteği | http.get(url,callback) | http.get('[https://example.com',res=>{}) | Asenkron](https://example.com',res=>{}%29 |
fs.writeFileSync | Dosya yazma (senkron) | fs.writeFileSync(file,data) | fs.writeFileSync('dosya.txt','data') | Küçük dosyalarda |
📊 Complete Node.js Properties Reference
Property | Values | Default | Description | Node.js Support |
---|---|---|---|---|
http.Server | Obje | null | HTTP sunucusu | Tüm sürümler |
fs.FileHandle | Descriptor | null | Dosya yönetimi | Node.js 10+ |
Buffer | Obje | null | Binary veri | Tüm sürümler |
process.env | Değişkenler | {} | Ortam değişkenleri | Tüm sürümler |
EventEmitter | Olaylar | null | Event-driven yönetim | Tüm sürümler |
console | Log arayüzü | console | Debug/log | Tüm sürümler |
JSON | Serileştirme | {} | JSON dönüşümü | Tüm sürümler |
Promise | Asenkron | null | Asenkron işlemler | Node.js 4+ |
setTimeout/setInterval | Timers | null | Delay veya tekrar görevleri | Tüm sürümler |
require/module.exports | Modüler sistem | null | Import/Export | Tüm sürümler |
path | Yol yardımcıları | null | Yol yönetimi | Tüm sürümler |
fs.promises | Asenkron dosya | null | Asenkron dosya API | Node.js 10+ |
Node.js Sözlüğü, POO, asenkron yönetim, event-driven programlama, dosya ve HTTP sunucu yönetimi konularında ileri düzey bilgi sağlar. Teoriyi pratiğe bağlayarak karmaşık projelerde sağlam ve sürdürülebilir çözümler üretmeyi mümkün kılar. Sonraki adımlar olarak veritabanı entegrasyonu, stream kullanımı, RESTful API geliştirme ve mikroservis mimarisi önerilir. İyi uygulamalar, güvenlik ve performans yönetimiyle Node.js projeleri ölçeklenebilir ve güvenli hale getirilir.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek