İçeriğe geç

Node.js Kurulumu ve Örnek Bir Node.js Projesi Yapımı

Bu yazımızda örnek bir node.js web uygulaması yapacağız. Öncesinde ise çalışabilmek için gerekli olan node.js ortamını kuracağız. Node.js kurulumunun yanı sıra, node.js güncelleme ve npm kurulumuyla ilgili de notlar paylaşıyor olacağım.

Node.js Kurulumu

Hızlıca node.js yükleme işlemlerinden bahsetmek gerekirse;
Yükleme paketini indirmek için Node.js Downloads sayfasına giriş yaparak işletim sisteminize uygun yükleme dosyasını indirip kurunuz (Windows için bu Windows Installer butonu olacaktır).

Yükleme işlemi tamamlandıktan sonra konsol ekranına giriş yaparak node -v komutunu girerek çalıştırın. Versiyon numarasını ekranda gördüyseniz node.js kurulumu tamamlanmış demektir.

Node.js yüklediğinizde npm uygulaması da beraberinde yüklenecektir. Bunu da npm -v komutu aracılığı ile bilgisayarınıza yüklenip yüklenmediğini kontrol edebilir, aktif kurulu olan npm versiyonunu görebilirsiniz. Bu satırı çalıştırdığımızda da yine node.js’de olduğu gibi bir versiyon çıktısı verecektir.

Bir anekdot; React, Vue.js, Angular vb. platformların gerektirdiği minimum node.js veya npm versiyonları olabiliyor. Geliştirme yapmadan önce bu durumu göz önünde bulundurmak gerekebilir.

Node.js Versiyon Güncelleme

Linux/Mac OSX işletim sistemli bilgisayarlarınızdaki Node.js versiyonlarını NVM (Node Version Manager) ile yönetebilirsiniz. NVM ile aynı bilgisayarda birden fazla Node.js versiyonu yükleyip kullanabiliyorsunuz.

Windows için ise tavsiyem klasik olarak yeni yükleme dosyasını indirip kurmanızdır. NVM Windows üzerinde çalışmıyor. Eğer NVM gibi çoklu bir şekilde versiyonları yönetmek ve kullanmak isterseniz, tamamen farklı ama benzeri bir proje olan nvm-windows‘u deneyebilirsiniz.

Farklı bir node.js versiyonu kurmak istiyorsanız Node.js önceki versiyonlar sayfasından dilediğiniz dosyaya erişebilirsiniz.

Node.js Projesi Başlangıç

Bu genel bilgiler yeterli ise örnek node.js projesi için bir başlangıç yapalım.

Öncelikle bir klasör açalım ve konsolu çalıştırarak bu dizine erişelim ve aşağıdaki komutu konsolda çalıştıralım. Ben merhaba-nodejs isimli bir klasör oluşturarak bu işlemleri yaptım.

npm init

Konsol ekranı, sırasıyla şu soruları size soracaktır. Bunlardan istediklerinizi cevaplayarak enter ile ilerleyebilirsiniz. Bazı seçeneklerde parantez içinde bir değer vardır. Bu varsayılan değerdir, direk enter’a bastığınızda bu değer kullanılacaktır.

package name: (merhaba-nodejs)
version: (1.0.0)
description: İlk node.js projem.
entry point: (index.js)
test command:
git repository:
keywords:
author: erhan kocabuga
license: (ISC)

Sonrasında bir özet ekranı size belirecek. Is this OK? komutunu son olarak onayladıktan sonra klasörünüzde package.json isimli bir dosya oluşacaktır.

Package.json dosyası, projenizde kullanılacak olan bir konfigürasyon dosyasıdır. Proje geliştirme süreçlerinizde kullanacağınız npm paketleri bu dosya içerisine bir bağımlılık (dependency) olarak eklenecektir.

Şimdi, aynı klasör içerisinde boş bir index.js dosyası oluşturun (farklı bir isimli dosya da olabilir, buna göre ilerleyebilirsiniz) ve içerisine yazmaya başlayalım.

const http = require('http');

const server = http.createServer((req, res) => {
	res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'}); 
	res.write('Merhaba Dünya!');
	res.end();
});

server.listen(3000, () => {
	console.log('Uygulama çalıştırıldı...');
});

Yazdığımız bu JavaScript kodu ile, belirttiğimiz port üzerinden (bu örnekte 3000) bir http servisi çalıştırarak bir yayın yapmayı amaçlıyoruz. index.js dosyasını kaydettikten sonra aşağıdaki şekilde konsol üzerinden dosyayı çalıştırabiliriz (Bu noktada bilgisayarınızdaki Firewall uyarı verebilir, server uygulamasının çalışması için buna onay vermek gerekecektir).

node index.js

Bu şekilde node.js ile index.js dosyasını çalıştırmış olduk. Bunun bir çıktısı olarak konsolda Uygulama çalıştırıldı... yazısını görmemiz gerekiyor. Eğer yazıyı görebiliyorsak browser üzerinden şu adrese girerek test edebiliriz.

http://localhost:3000

Merhaba Dünya! ifadesi ekrana geldi ise yazdığımız kodda bir sorun yok demektir. Artık lokalimizde bir web sunucusu çalışıyor, basit bir websitesi yapmış olduk diyebiliriz.

Peki bu web uygulamasının başka sayfaları olmayacak mı? Şimdilik hangi sayfaya girersek girelim hep aynı yazıyı ekranda görüyoruz. Uygulamamızın routing sistemini (URL yönetimi olarak da adlandırılabilir) yönetmek için farklı yollar bulunmakta. Biz burada kullanım kolaylığı, popülerliği ve esnek yapısı sebebiyle bir npm modülü olan express‘i kullanacağız.

Express (Express.js) Nedir?

Express, Node.js platformu için hazırlanmış, kolaylıkla çeşitli web uygulamaları ve API servisleri oluşturmamızı sağlayan, açık kaynaklı bir uygulama framework’üdür.

Express Kurulumu ve Kullanımı

Express modülünü NPM üzerinden projemize ekliyor olacağız. Bunun için aşağıdaki şekilde basit ve klasik bir npm install komutunu konsol üzerinden çalıştırmamız yeterli.

npm install express

Tebrikler! Express artık projemize dahil oldu. Devam etmeden önce node_modules klasörü ile ilgili kısa şöyle ek bir bilgi vermek istiyorum.

node_modules klasörü nedir? Ne işe yarar?

Yüklediğimiz express modülü ile proje klasöründe node_modules adında bir klasör, içerisinde bir çok alt klasör ve dosyalar olduğunu göreceksiniz. Bu klasörler express modülünün dependencies dediğimiz bağımlılıkları, yani çalışması için ihtiyaç duyduğu modüllerdir.

Express de aynı şuan bizim yapıyor olduğumuz gibi bir node.js projesidir ve içerisinde package.json dosyası bulunur. Express yüklenirken bu package.json dosyası içerisindeki dependencies bölümündeki modülleri de beraberinde projemize indirir.

Tüm node.js projelerinde bu durum geçerlidir. Ek olarak, node_modules klasörü genellikle çok dosya içeriği ve yer kapladığı için Github repository’lerinde bulunmadığını görürsünüz. Bu bir sorun değildir. Github üzerinden herhangi bir node.js projesini indirdikten sonra aynı klasör içerisinde bir konsol açarak npm install komutunu çalıştırdığınızda bu klasör otomatik olarak oluşacak ve gerekli dosyaları indirecektir.


Express ve node_modules klasörüne değindikten sonra örnek node.js uygulaması projemize devam edelim. Yukarıda node.js ile bir http sunucusu oluşturmuştuk. Şimdi express aracılığıyla routing destekli şekilde yeniden yazalım.

const express = require('express');
const app = express();

app.get('/', (req, res) => {
	res.send('Merhaba Dünya!');
}); 

app.listen(3000, () => {
	console.log('Uygulama çalıştırıldı...');
});

Gördüğünüz şekilde gayet basit ve anlaşılabilir bir biçimde kodu tekrarladık. res.send dışında farklı response metodları da bulunmaktadır. Örneğin bir json çıktısı döndürmek istenirse res.json({ 'product': 'Elma', 'price': 3.50, 'currency': 'TL' }); gibi bir ifade yazabilirsiniz. Bunu kendiniz de deneyebilirsiniz.

Express’in res.send ve res.json dışında da response türleri vardır. Diğer tüm response tiplerini https://expressjs.com/en/api.html#res.methods adresinden görebilirsiniz.

Yazdığımız bu koda aşağıdaki şekilde /kategori eklemesi yapalım.

const express = require('express');
const app = express();

app.get('/', (req, res) => {
	res.send('Merhaba Dünya!');
});

app.get('/kategori', (req, res) => {
	res.send('Kategori sayfasındasınız!');
});

app.listen(3000, () => {
	console.log('Uygulama çalıştırıldı...');
});

Artık uygulamamıza bir route daha ekledik, bir kategori sayfası yapmış olduk. http://localhost:3000/kategori adresine girdiğimizde bunu görebileceğiz.

Peki sürekli bu şekilde statik url mi tanımlayacağız? Hayır, route parametrelerini dinamikleştirmek tabii ki mümkün.

Express ile Dinamik Parametreli Route Oluşturmak

Dinamik parametreden kasettiğimi şu şekilde açıklayabilirim. Bir url adresimiz olsun, örnek olarak Sabah’ın bir galeri detay sayfasını ele alalım. https://www.sabah.com.tr/galeri/teknoloji/bu-icatlar-gorenleri-gulduruyor adresi için; teknoloji bir kategori, bu-icatlar-gorenleri-gulduruyor ise galeri adından türetilen, aynı zamanda slug dediğimiz başlık url’idir.

Böyle bir route’u karşılamak için .NET MVC tarafında şöyle bir kural ekliyoruz: /galeri/{categoryUrl}/{titleUrl}

Node.js express üzerinde de bundan farklı birşey yapmayacağız. Bu adresi karşılamak için express’e şöyle bir route eklememiz yeterli olacak.

app.get('/galeri/:categoryUrl/:titleUrl', (req, res) => {
	const category = req.params.categoryUrl;
	const titleUrl = req.params.titleUrl;
	
	res.send(`${category} kategorisindeki ${titleUrl} içeriğine bakıyorsunuz.`);
});

Gördüğünüz gibi route parametrelerini request objesi üzerinden req.params ile aldık. Sonrasında istediğiniz şekilde kullanabilirsiniz.

Node.js örnek web uygulamamızın son hali şu şekilde oldu. Siz de dilerseniz direk alıp test edebilirsiniz.

const express = require('express');
const app = express();

app.get('/', (req, res) => {
	res.send('Merhaba Dünya!');
});

app.get('/kategori', (req, res) => {
	//res.send('Kategori sayfasındasınız!');
	res.json({ 'product': 'Elma', 'price': 3.50, 'currency': 'TL' });
});

app.get('/galeri/:categoryUrl/:titleUrl', (req, res) => {
	const category = req.params.categoryUrl;
	const titleUrl = req.params.titleUrl;
	
	res.send(`${category} kategorisindeki ${titleUrl} içeriğine bakıyorsunuz.`);
});

app.listen(3000, () => {
	console.log('Uygulama çalıştırıldı...');
});

Temel seviyede bir node.js projesi nasıl yapılır uygulamalı bir şekilde göstermiş olduk. Umarım faydalı olabilmiştir, farklı bir yazıda görüşmek üzere 🙂

İlk Yorumu Siz Yapın

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir