Image 244
Node.js ile “Hello World”

Hello World!

İlk “Hello World” kendi içinde bir heyacan barındırır. Hazzı ve yaşattığı heyacan başkadır, unutulmazdır. Ben de ilk “Hello World”ü Pascal dili ile ekrana yazdırmıştım. Üzerinden yıllar geçmiş olsa da unutulmuyor. İşte o zaman yeni bir dünyanın kapıları aralanıyor ve bu kapıdan içeri adım atıyorsunuz.

 Node.js

Değişim, yazılım dünyasının iyi tarafı mı, kötü tarafı mı, tam anlamıyla kendim de cevabını bulamadığım bir konu. Bir sabah uyanıyorsunuz hop bir tweet, yeni bir dil çıkmış. İşe geliyorsunuz bir arkadaşınız heyecanla yeni bir konudan bahsediyor. Tabi yeni diller, yeni teknolojiler haliyle eskileri toprağa veriyor. Dünün performanslısı, en güvenlisi, en stabili, en kolayı bugün hantal ve işe yaramazı oluyor. Hayat bu, ölenle ölünmüyor. Bir kapı kapanırken yeni kapılar açılıyor, metaverse’ler arasında geziniyoruz. Metaverse? Neyse bu konuya girmeyelim aklımız bulanır.

JavaScript’i duydunuz mu? Eminim duymayanınız yoktur. Sayısızca dil geldi geçti ama kendisine tam manasıyal dil unvanı bile verilmeyen yaşlı kurt güncelliğini, yeniliğini koruyor. Dinamik web sitelerinin vazgeçilmezi, olmazsa olmazı, artık backend yani sunucu tarafında da “varım” diyor. O “varım” diyorsa bizde inceleyelim, bir “Hello World” yazdıralım bakalım neler yapabiliyor.

Bir kardeşimiz Ryan Dahl, demiş ki “ben bu JavaScript’i sunucuda nasıl kullanırım.” Sadece düşünmemiş, boş durmamış, mesai saatleri dışında çalışmış. Google tarafından Chrome için geliştirlen V8 motorunu almış C++ ile kapsullemiş ve JavaScript’i sunucu tarafında çalışır hale getirmiş. Bu kapsüle de Node.js adını vermiş. Node.js’in kodlarını dünyaya açmış, açık kaynak (pek içine bakmasak da açık olduğunu bilmek hoş oluyor) ve tüm ortamlarda çalışmasını sağlamış (cross-platform). “Mac, Windows ve Linux, ne kullanıyorsanız farketmez, çalıştırın, kullanın, para da istemiyorum” demiş. Ne güzel değil mi?

 Single-Threaded

Az eleman, sınırlı kaynak, çok iş. Kârlılığı artırmanın yegane yöntemi. Bu yöntem Node.js’te de işe yaramış. Node.js aslında araçı kurum gibi arka planda işleri taşeronlara yaptırıyor. Bunun için ön yüzde talepleri toplayan ana thread’i var. Örneğin; veri tabanından bir veri okuyacaksın. Ana thread bu talebi alıyor ve veri tabanına iletiyor. Sonucu beklemeden diğer istekleri alıyor. Önceki isteğin sonucu geldiğinde sonuç kuyruğuna yazılıyor ve oradan talep edene iletiliyor. Bu isteklere ‘event’, sonuclara da ‘callback’ adı veriliyor. İstekler ve Callback’ler kuyrukta toplanıyor ve dağıtılıyor. Bu şekilde istekler birbirini bloklamadan aynı anda asenkron olarak işlenebiliyor.

Kısaca Node.js’ten bahsettiğimize göre “Hello World” uygulamamızı yapmaya başlayabiliriz.

 Node.js Kurulumu

https://nodejs.org sitesini açtığımızda kullandığımız işletim sistemine uygun indirme seçenekleri karşımıza çıkıcaktır. Bizim için uygun olan sürümü indirip kurabiliriz.

Kurulum tamamlandıktan sonra Command Prompt veya Terminal ekranından versiyon komutu çalıştırılarak kurulumu kontrol edebiliriz. Mutlaka edin, v.. ile başlayan rakamları göremezseniz kurulumda sıkıntı olmuş demektir.

node –version
v16.13.2

Bu aşamadan sonra Node.js bilgisayarımıza kuruldu ve üzerinde uygulama geliştirilebilir.

Artık JavaScript’i server yani backend tarafında da kullanabileceğiz. Haydi server tarafında http isteklerimize cevap veren bir uygulama yazalım.

 Uygulama Dizini Oluşturma

Hello World uygulaması için bir dizin oluşturuyoruz. Kullandığınız işletim sisteminin komutlarıyla ya da size uygun bir yöntem ile dizin oluşturabilirsiniz. Uygulamamız ile ilgili tüm dosyaları bu dizin içinde barındıracağız. Ben terminal üzerinden aşağıdaki komutlar ile HelloWorld adında bir dizin oluşturdum.

mkdir HelloWorld
cd HelloWorld

 Node Package Manager (NPM)

Node paketlerinin kayıtlı olduğu, açık kaynak kodlu bir paket yönetim kütüphanesidir. Uygulamanızda kullanabileceğiniz bir çok kütüphaneyi bulundurur. Hızlı ve kullanımı kolaydır.

Uygulama geliştirmeye hazır hale getirmek ve package.json dosyasını oluşturmak için npm init komutunu kullanıyoruz.

npm init

Bu komut uygulama dizininde package.json adında bir dosya oluşturmamıza yardımcı olmaktadır. Bunu elle de oluşturabiliriz ancak birçok detayı aklımızda tutmamız gerekir. Hataya açık olur ki bu tür aksiyonlara hiç gerek yok.

Aşağıdaki komutları çalıştırarak, description ve entry point değerlerini değiştirdiğimiz, diğer seçenekler için default değerler içeren bir package.json dosyası oluşturduk.

cd HelloWorld
npm init

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help init` for definitive documentation on these fields and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (helloworld)
version: (1.0.0)
description: first node app
entry point: (index.js) app.js
test command:
git repository:
keywords:
author:
license: (ISC)

About to write to /Users/zkasap/NodeWork/HelloWorld/package.json:

{
“name”: “helloworld”,
“version”: “1.0.0”,
“description”: “first node app”,
“main”: “app.js”,
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit 1″
},
“author”: “”,
“license”: “ISC”
}

Is this OK? (yes) yes

Package.json dosyası uygulamamıza ekleyeceğimiz tüm ‘npm’ paketlerin referansını tutmaktadır. Dosyada referansı bulunan ve henüz indirilmemiş tüm paketleri,

npm install

komutu ile node_modules klasörüne otomatik olarak indirip kurulumunu yapabilmekteyiz.

 Text Editör ile App.js Dosyası Oluşturma

Text editör deyince aklıma Visual Studio Code geliyor. Farklı editör kullananlar var, siz de aşina olduğunuz editörü kullanabilirsiniz ancak, uzun yıllardır Microsoft ürünlerini kullanıyorum, bazı ürünleri, dilleri ve teknolojileri gerçekten çok iyi.

Visual Studio Code tatlı, hoş ve eklentileri ile yetenekleri artırılabilen bir editör. Editörü ücretsiz bir şekilde web sitesinden indirip kullanabilirsiniz.

Download Visual Studio Code – Mac, Linux, Windows
Visual Studio Code is free and available on your favorite platform – Linux, macOS, and Windows. Download Visual Studio…code.visualstudio.com

VS Code indirip kurduysanız, editörde daha önce oluşturduğumuz HelloWorld dizini açıyoruz ve App.js dosyası oluşturuyoruz ve içine aşağıdaki kod bloklarını yazıyoruz.

const http = require(‘http’)
const hostname = ‘127.0.0.1
const port = 3000

const server = http.createServer((req, res) => {
res.statusCode = 200
res.setHeader(‘Content-Type’, ‘text/plain’)
res.end(‘Hello World\n’)
})

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`)
})

Bu kod bloğu ile http isteklerine cevap veren bir node.js uygulaması oluşturacağız.

const http = require(‘http’)

require uygulamamıza node.js’in standart kütüphanelerinden olan htpp modülünü dahil edecek,

http.createServer

createServer metodu ile HTTP server oluşturacak ve çalıştıracağız.

server.listen(port, hostname,

server.listen metotu ile http server’ın dinleyeceği port ve IP adreslerinin tanımını yapacağız.

app.js dosyasını oluşturduk ve code bloğunu yazdıysak, kodumuzu çalıştırabiliriz. Bir terminal açıyoruz. Terminali VS code üzerinden de açabiliriz. Menülerde Terminal seçeneği var.

Terminali açtıktan sonra, helloworld dizininin içine cd komutları ile giriyoruz.
node app.js komutunu çalıştırıyoruz.

node app.js

Komut çalıştırıldıktan sonra hatamız yoksa oluşturduğumuz http server aktif olarak http isteklerine cevap verecek hale gelecektir. Tarayıcı üzerinde 127.0.0.1:3000 adresini yazıp, Enter tuşuna basarsak Hello World cümlesini görebiliriz.

Projemizin VS Code üzerindeki hali ise aşağıdaki gibi gözükecektir. 

Evet yeni bir aleme kapımız açıldı. Hayırlı uğurlu olsun.

Hepimize faydalı olması temennisiyle,

Selametle kalın.

 

Kaynaklar

Zafer Kasap
Şubat 15 , 2022
Diğer Blog İçerikleri