Kod Ekranı

Node.js, ölçeklenebilir ve yüksek performanslı uygulamalar geliştirmek için popüler bir JavaScript çalıştırma ortamıdır. Ancak, verimli bir Node.js uygulaması oluşturmak için bazı performans optimizasyonları uygulanmalıdır.

Hata yönetimi (Error Handling) ve hata ayıklama (Debugging), yazılım geliştirmenin önemli bileşenlerindendir. Node.js gibi dinamik ve asenkron çalışan bir ortamda, hataları yakalamak ve yönetmek uygulamanın güvenilirliğini artırır.

Worker Threads modülü, CPU yoğunluklu işlemleri ana iş parçacığını (event loop) bloklamadan yürütmek için kullanılan bir Node.js özelliğidir.

Stream API, Node.js'in yüksek miktarda veriyi etkili bir şekilde işlemesini sağlayan güçlü bir araçtır. Büyük dosyaları okuma, yazma ve dönüştürme gibi işlemler, Stream API sayesinde bellek kullanımını optimize ederek gerçekleştirilir.

Async/Await, Node.js uygulamalarında asenkron işlemleri daha okunabilir ve yönetilebilir hale getiren modern bir JavaScript yapısıdır.

Node.js gibi platformlarda asenkron işlemler uygulamaların performansını artırmak için kritik bir rol oynar.

Node.js'te iki temel modül sistemi bulunmaktadır: CommonJS (CJS) ve ES Modules (ESM). CommonJS, Node.js'in varsayılan modül sistemidir, ES Modules ise modern Javascript standardına uygun olarak geliştirilmiştir.

Node Package Manager (NPM), Node.js ekosisteminin en önemli bileşenlerinden biridir. NPM, JavaScript projeleri için paket yönetimi sağlayan bir araçtır.

Node.js, modüler bir yapıya sahiptir ve uygulamaları daha düzenli ve yönetilebilir hale getirmek için modül sistemini kullanır.

Node.js'in en önemli özelliklerinden biri, asenkron ve tek iş parçacıklı (single-threaded) bir mimari kullanmasıdır. Bu yapı, Node.js'in yüksek performanslı ve ölçeklenebilir uygulamalar geliştirmek için tercih edilmesini sağlar.

Node.js'in yerleşik http modülü sayesinde, ekstra bir kütüphane gerektirmeden basit ve güçlü bir web sunucusu oluşturabilirsiniz.

Node.js, JavaScript'i sunucu tarafında çalıştıran, ölçeklenebilir ve yüksek performanslı uygulamalar geliştirmek için kullanılan açık kaynaklı bir teknolojidir.

Paylaşın

Küçük İpuçları

MongoDB: $size operatörünü agregasyonlar içerisinde alt dizilerin uzunluğunu almak için kullanabilirsiniz.


{
  $project: {
    length: { $size: "$altDizi" }
  }
}

Javascript: metinlerin içerisine değişkenleri yerleştirmek


var text = `Name: ${data.name} Age: ${data.age}`;

MongoDB: unwind türü aggregation ile alt dökümanları ana döküman gibi üste çıkarabilirsiniz.


{
  $unwind: {
    path: "$altDokuman"
  }
}

HTML: daha iyi bir seo kalitesi için web sayfanızdaki görsellere alt ve title özelliği ekleyin


<img src="image.png" alt="Resim Başlığı" title="Resim Başlığı" />

C#: null değerlerde hata verilmesi isteniyorsa


DataModel data = getData();
if (data == null)
    throw new NullException();
var newData = data;
// yerine
var newData = data ?? throw new NullException();
// kullanabilirsiniz

jQuery: Sınıf değeri verilmiş html öğelerini jQuery' de each fonksiyonu ile tarayıp her biri için işlem yapabilirsiniz.


$('.element').each(function (index) {
    $(this).text('metin ' + index);
    // $(this) jQuery cinsinden elementi verecektir.
    // index kaçıncı indis olduğunu verecektir.
});

MS-SQL: Eğer tablodaki bir alanın null değerleri yerine başka bir değer olarak gelmesini istiyorsanız isnull kullanın.


select UrunAdi, 
	isnull(Fiyat, 0) as Fiyat
from tabloFiyat
-- Fiyat null ise 0 gelsin

MS-SQL: İki tablodan ilişkili veriler çekmek için iç içe sorgu yerine join kullanabilirsiniz.


select UrunAdi,
	(select top 1 MarkaAdi 
	from tabloMarkalar m
	where m.MarkaID = u.MarkaID)
from tabloUrunler u
-- İç içe sorgu yerine
select UrunAdi, m.MarkaAdi
from tabloUrunler u
	left join tabloMarkalar m on
		m.MarkaID = u.MarkaID

HTML: Nesnelere id yerine class özelliği vermek seo açısından daha faydalı olabilir.


<button id="gonderme-tusu"></button>
<-- yerine --/>
<button class="gonderme-tusu"></button>
<-- kullanın --/>

MS-SQL: Bir tablonun artan id değerini tekrar sıfırlamak için şu komutu kullanın.


dbcc checkident('tabloStok', reseed, 0)