NodeJS ve Express Framework ile Uygulama Geliştirme

Merhaba arkadaşlar bu makalede üzerinde denemeler yaptığım NodeJS ile ilgili bir örnek paylaşacağım. NodeJS hakkında kısa bir bilgi vermek gerekirse; Sunucu tarafında çalışan, açık kaynak kodlu, cross-platform Javascript geliştirme ortamıdır. Chrome tarayıcılarda çalışan Google tarafından geliştirilen V8 Javascript motorunu kullanır. İlk orjinal hali Ryan Dahl tarafından 2009 yılında geliştirilmiştir ilk önceleri geliştirme ve bakım çalışmaları aynı kişi tarafından yapılmış daha sonra Joyent firması sponsor olmuştur. GoDaddy, LinkedIn, Microsoft, Paypal, Yahoo gibi firmalar tarafından kullanılmaktadır. Genel görüş olarak performans açısından öne çıktığı söylenebilir.

İlk örneğimizi yapmak için Buradaki adresten NodeJS nin son versiyonunu indirin. Kurulum adımları hakkında internette çokça bilgi mevcut. Kurulumu tamamladıktan sonra yeni bir klasör oluşturup içerisine myapp.js isminde bir dosya ekleyin. dosya ve klasör ismini kendiniz belirleyebilirsiniz.

myapp.js

var http = require('http');

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

server.listen(3000);

dosyayı yukarıdaki gibi düzenledin. ve komut satırı uygulamasını (cmd) çalıştırın. cd komutu ile çalıştığınız klasörün içerisine gelin

node C:\desktop\nodeapp\myapp.js

komutu ile uygulanızı çalıştırın. Herşey yolunda gidiyor ise NodeJS sunucusu çalışacak ve 3000 portundan yayın yapmaya başlayacaktır. tarayıcınızdan http://localhost:3000 ya da http://127.0.0.1:3000 adreslerine giderek test edebilirsiniz. yukarıdaki kodları açıklayalım. İlk satırda http modülünü NodeJS ye bildirdik ardından createServer metoduyla yeni bir server oluşturduk ve listen metoduyla çalıştırdık. Bu fonksiyona response ve request olarak iki parametre verdik. writeHead ve write fonksiyonları ile response body içeriğini oluşturduk ve end fonksiyonu ile de response’u sona erdirdik. Bu işlem ile tarayıcıya text/plain döküman tipinde bir cevap döndürdük ve ekranda “Merhaba Dünya!” yazdırdık.

Şimdi URL değişkenlerini kullanarak bir uygulama yapalım. Querystring’deki isim parametresini ekrana yazı yazdıralım.

var http = require('http');
var url = require('url');

var server = http.createServer(function (req, res) {
	var q = url.parse(req.url, true);
	var qdata = q.query;
	
    res.writeHead(200, {'Content-Type': 'text/plain'});
	res.write("isim = " + qdata.isim);
    res.end();
});

server.listen(3000);

Express Framework

Express Framework, daha kolay ve yönetilebilir NodeJS  uygulamaları yazmak için geliştirilmiş bir framework’tür. NodeJS ile uygulama geliştirmek için kullanmak şart değildir fakat daha kolay çalışmanızı sağlar. detaylı bilgi için bu adresi ziyaret edebilirsiniz. Kurulum için NodeJS komut satırına

npm install express

yazın ve kurulum bitene kadar bekleyin ardından uygulamanızı aşağıdaki şekilde güncelleyin.

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

app.get('/', function (req, res) {
  res.send("Bu Express Framework uygulamasıdır")
})

app.listen(3000,function () {
    console.log('Uygulama 3000 portunda çalışmakta.')
});

Express Framework, HTTP metodlarını, Routing İşlemlerini, Templating işlemlerini daha kolay yapmanızı sağlar. Aşağıda farklı Http metodları için yazılan örnekleri inceleyin.

app.get('/', function (req, res) {
   res.send('GET metodu ile yapılan isteklerde burası çalışır');
})
app.post('/', function (req, res) {
   res.send('POST metodu ile yapılan isteklerde burası çalışır');
})
app.delete('/', function (req, res) {
   res.send('DELETE metodu ile yapılan isteklerde burası çalışır');
})

Regular Expression kullanarak routing mekanızması hazırlayabilirsiniz.

app.get('/urunler', function (req, res) {
  res.send('ürünler sayfasını getir')
})
//dinamik url için regular expression kullanın
// /urun-detayi-3242
app.get('/urun-detayi-([0-9]+)', function (req, res) {
  res.send('ürünler sayfasını getir')
})
// /yeni-is-ilanlari
app.get(/.*-ilanlari$/, function (req, res) {
  res.send('/.*fly$/')
})

Routing işlemlerinde url parametreleri kullanabilirsiniz.

app.get('/kullanicilar/:kullaniciId/yazilar/:postId', function (req, res) {
  //req.params = { "kullaniciId": "53324", "postId": "87687776" }
  res.send(req.params)
})
// parametrelerin belli kurallara uymasını istiyorsanız regular expression kullanın.
app.get('/kullanicilar/:kullaniciId(\d+)', function (req, res) {
  //req.params = { "kullaniciId": "53324", "postId": "87687776" }
  res.send(req.params)
})

EmbeddedJS (EJS) ile Template Oluşturun

EJS bir javascript template engine kütüphanesidir. Html kodları arasına kendine özel sözdizimini yerleştirerek dinamik görünüm oluşturmanızı sağlar. Piyasada JQuery, Underscore vs. ile yazılmış çokça template engine kütüphanesi bulunmakta biz NodeJS modülü olduğu için EJS yi kullanacağız. Kurulum için nodejs komut satırına

npm install ejs

yazın ve kurulum bittikten sonra aşağıdaki örneği inceleyin

var express=require('express');
var app=express();
var ejs = require('ejs');
var fs = require("fs");

app.use(express.static('public'));
app.use(express.static('files'));

app.get('/', function (req, res) {
  people = ['geddy', 'neil', 'alex'];
  
  var data = fs.readFileSync('C:/input.txt');
  
  html = ejs.render(data.toString(), {people: people}, { filename : "input.txt" });
  res.send(html);
})

app.listen(3000,function () {
    console.log('Uygulama 3000 portunda çalışmakta.')
});

input.txt içeriği aşağıdaki gibidir.

<ul>
<% for(var i=0; i<people.length; i++) {%>
   <li><%= people[i] %></li>
<% } %>
</ul>

programın çıktısı aşağıdaki gibi olacaktır

<ul>
   <li>geddy</li>
   <li>neil</li>
   <li>alex</li>
</ul>

Mustafa Tayyip YETİŞ
Yazılım Geliştirme Uzmanı

5.0 Ort. (93% puan) - 1 oy

Bir Cevap Yazın

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