Menu

Node.js ve JavaScript Arasındaki Fark Nedir?

JavaScript dildir; Node.js onu tarayıcının dışında çalıştıran bir programdır. Sözdizimi aynıdır, ama kodunun etrafındaki global'ler ve yerleşik API'ler farklıdır.

Bu sayfada çalıştırılabilir editörler var. Düzenle, çalıştır ve sonucu anında gör.

JavaScript bir programlama dilidir; Node.js ise bir runtime, yani JavaScript'i tarayıcının dışında çalıştıran bir programdır. Sözdizimi, tipler ve standart nesneler (Array, Promise, JSON) ikisinde de aynıdır. Değişen, kodunun etrafındaki ortamdır: tarayıcı bir web sayfasıyla çalışman için sana window ve document verir, Node.js ise dosyalar, sunucular ve işletim sistemiyle çalışman için global, process, require ve fs gibi modüller verir.

Tarayıcı global'leri undefined, Node.js olanları object ya da function yazdırdı; son satır da true yazdırdı, çünkü Node.js'te globalThis ve global aynı nesnedir. İlk altı satırı bir tarayıcı konsoluna yapıştırırsan sonuçlar tersine döner.

Tek tabloda fark

Tarayıcıda JavaScriptNode.js'te JavaScript
NedirTarayıcının motorunun çalıştırdığı dilNode.js runtime'ının (V8) çalıştırdığı aynı dil
Global nesnewindowglobal
Neyle çalışırSayfayla: document, DOM, olaylarMakineyle: fs, http, process, os
Modüller<script type="module">, importrequire (CommonJS) ve import (ES modules)
PaketlerSayfaya bundle edilirnpm ile node_modules içine kurulur
GirdiTıklamalar, formlar, klavye olaylarıKomut satırı argümanları, standart girdi, HTTP istekleri
Array, Promise, JSON, setTimeout, consoleVarVar

İnsanların en çok takıldığı satır modüller satırıdır. Node.js iki sistemi de, require ve import'u destekler, tarayıcılar ise yalnızca import'u anlar. Hangisini seçeceğini CommonJS vs ES modules sayfası açıklıyor.

Dil aynı

Yalnızca dili kullanan bir fonksiyon her yerde çalışır. Bu blokta Node'a özgü hiçbir şey yok ve bir tarayıcıda da aynı satırları yazdırırdı:

Program {"best":95,"average":85} ve Passed: 2 of 3 yazdırdı. Spread sözdizimi, reduce, template string'ler ve JSON dile aittir ve ECMAScript standardında tanımlıdır, bu yüzden her runtime'da vardır.

Yalnızca Node.js'te olanlar

Node'a özgü kısım, işletim sistemiyle konuşan yerleşik modüller ve global'lerdir:

Program bir dosya yazdı, onu geri okudu ve .txt 2 lines yazdırdı, ardından boş bir argüman listesi yazdırdı. Ne dosya erişimi ne de process.argv tarayıcıda vardır; orada bir sayfa diskine dokunamaz.

Hangi dil özelliklerini kullanabilirsin

Dilin sürümleri vardır (ES2015, ES2020, ES2024 ve diğerleri) ve her motor yeni özellikleri kendi hızında ekler. Node.js her sürümünde belirli bir V8 motoru getirir, yani hangi özelliklerin çalışacağına Node.js sürümün karar verir: örneğin Object.groupBy ve Array.prototype.findLast yeni bir sürüm ister. Bu yüzden tarayıcı özellik tabloları Node.js'i Chrome, Firefox ve Safari'nin yanında bir sütun daha olarak gösterir. Yeni bir sözdizimi SyntaxError ile patladığında ya da bir metot undefined çıktığında node --version çalıştır ve polyfill'e uzanmadan önce sürümünü yükselt.

İki ortamda da çalışan kod yazmak

Kütüphane yazarları bazen ortama özgü bir API'yi kullanmadan önce kodlarının nerede çalıştığını kontrol eder:

const isNode = typeof process !== 'undefined' && process.versions?.node != null;
const isBrowser = typeof window !== 'undefined';

Mümkünse ortamın adını değil, ihtiyacın olan özelliği kontrol et: typeof fetch === 'function' "bu Node mu" sorusundan daha çok şey söyler. Bugün ikisinde de fetch, URL, TextEncoder, setTimeout ve structuredClone var, yani birkaç yıl öncesine göre daha az kod kontrole ihtiyaç duyuyor.

Sık yapılan hatalar

Bir Node.js script'inde document ya da window kullanmak. ReferenceError: document is not defined alırsın. O kodun yeri tarayıcıdır.

Tarayıcıda require kullanmak. Tarayıcılarda yoktur. import kullan ya da require çağrılarını tek bir dosyaya çeviren bir bundler kullan.

Node.js'in ayrı bir dil olduğunu düşünmek. Değildir. Bir JavaScript eğitimi bir şeyi öğretiyorsa, DOM kullanmadığı sürece o şey Node.js'te de çalışır.

Sıkça Sorulan Sorular

JavaScript öğrenmeden Node.js öğrenebilir miyim?

Pek değil. Node.js'te yazdığın her satır JavaScript'tir, yani önce dil gelir. Fonksiyonları, nesneleri ve promise'leri bildiğinde Node.js öğrenilecek ek API'lerden ibarettir.

Node.js'te neden "document is not defined" hatası alıyorum?

document tarayıcının DOM'udur ve Node.js'te sana onu verecek bir sayfa yok. document ya da window'a dokunan kodun bir tarayıcıda ya da jsdom gibi DOM'u taklit eden bir test kurulumunda çalışması gerekir.

TypeScript ile Node.js aynı şey mi?

Hayır. TypeScript, JavaScript'e derlenen tipli bir JavaScript sürümüdür. Sonucu Node.js'te ya da tarayıcıda çalıştırabilirsin; yeni Node.js sürümleri tipleri silerek birçok .ts dosyasını doğrudan da çalıştırabilir.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

Başla