NodeJS serisi (1) / ALcatraz'

ALcatraz'

Kıdemli Üye
30 May 2013
4,338
4
İstanbul
Ilk olarak Node.js nedir?

Guzel soru, basit cevap;

Server-side bir platformdur network application'lar icin.

Yani Node.js JavaScript ile sunucu tarafli kodlamamiza yarayan bir frameworktur.

Node.js, JavaScript gibi Event-Based bir platformdur bunun en buyuk yararini server tarafli baglantilarda gorecegiz.

Mesela Apache coklu baglantilar icin hepsine ayri Thread kullanir ve Ram'den cok yer, bu islemi Node,js'de daha az bir islem ve islem gucu ile bunu saglayabiliriz.

Bunun haricinde kendi Webserver'ini sunmasi ayri bir avantaji.

Bence bu cok cool, teorik olarak Apache yada nginx'i bir kenara atip sadece Node.js'ye ihtiyac duyuyoruz.

Single-page-apps'ler icin URL routing'i ayri bir ozelligi.

Node.js Googles V8 motoruna sahip, yani Chrome ne yapabiliyor ise, Node.js'de yapabilir. (Fonksiyon ve APIler).

Ve en can alici ozelligi (Vikipedia);

`
Kod:
 [URL="https://tik.lat/zdtFV"] V8[/URL] is the JavaScript execution engine which was initially built for  [URL="https://tik.lat/eCU8D"] Google Chrome[/URL]. It was then open-sourced by Google in 2008. Written in  [URL="https://tik.lat/QoPZh"] C++[/URL], V8 compiles JavaScript source code to native  [URL="https://tik.lat/va7JT"] machine code[/URL] instead of interpreting it in real time. `

Kurulumu anlatmayacagim.

Hello World;

Butun programlama dillerinin ilk derslerinde (Kurulumdan vesaire sonra) goreceginiz ilk sey `Hello World` uygulamasidir.

Node.js'de yeni bir programlama dili ogrenmemize gerek yok JavaScript'ten biraz farkli sadece.

`Hello World` e gelelim konu karisiyor , olagandan farkli 2 tur `Hello World` umuz var.

Birincisi shell tarafli ikincisi Server tarafli.

Ilk once Shell tarafli olana bakalim;

Kod:
console.log("Hello World");
Bu kadar , bu QuellCode'umuzu server.js veyahut ne ile adlandirdiysaniz js dosyamiza yazabilir veyahut kopyala yapistir yapabilirsiniz.

Lakin yazmanizi tavsiye ederim cunku daha yeni basliyoruz, kaytarmayalim dimi?

Simdi siz her hangi bir Shell-Emulator'de mesele PuTTY veyahut UberSpace
Kod:
' node server.js '
olarak calistirdiginiza karsiniza "Hello World" ekrani gelecek.

Bende ise boyle;

NDaj6R.jpg


JavaScript hakkinda bilgisi olanlara 'console.log()' tanidik gelecektir. Zaten JavaScript hakkinda en azindan temel bilginiz olmadan Node.js'ye baslamanizi tavsiye etmem.

console.log() ile genellikle Debug Console kodlari Browser'e gonderme imkanimiz var.

Node.js ile ayni islemi yapar lakin veriler Browser'de degil Bash Shell'de (PuTTY) tutulur.

JavaScript'te oldugu gibi kodun o anda yaptigi islemi, hatalari veyahut eklemek istedigimiz verileri test etmek-gormek icin console.log()'u Node.Js'de de kullanabiliriz.

Ikinci olarak Server-Side;

Simdi Server-Side 'de isler biraz karisiyor.

Belirledigimiz port'a bir islem gonderip onu browser'de gostericez.

Ilk oncelikle bir Webserver olusturmaliyiz , biraz alistiktan sonra bu simdi buyuk gordugunuz seyler ufacik gibi gelecek.

Burada oyunumuza modul dahil oluyor, burada cesitli apiler, html parserler vesaire vesaire.


Simdi ilk once bir degisken ve require ile modulumuzu import etmemiz lazim;

Kod:
var degiskenAdi = require('modulAdi');
olarak tanimliyoruz. Simdi sadece bir port araciligi ile Webserver'imize baglanmak kaliyor.

Kod:
const http = require('http'); // http modulunu import ediyoruz.
const hostname = '127.0.0.1'; //localhost'umuzu tanimliyoruz.
const port = 3000; //3000.portumuzu tanimliyoruz
const server = http.createServer((req, res) => { // Server olusturuyoruz.
    res.statusCode = 200; 
    res.setHeader('Content-Type', 'text/plaint');
    res.end("Nigs mom\n"); // Header'i , statusCode'umuzu ve mesajimizi tanimladik.
});

server.listen(port, hostname, () =>{ 
    console.log("Server baslatildi.");
});
tusvb1.jpg


Ben localhost'umdan kullanacagim icin server olusturdum, server'inizde calisiyorsaniz;

Kod:
const connect = require('connect');
var server = connect().
use(function(req,res) {
    res.end('Nigs mom');
}).
listen(64352); // Port numarasi
console.log("Server kendi siteniz; portAdresinde baslatildi.");
listen(); parantez icine port numaranizi yaziyorsunuz.
Onun disinda Quellcode'muz tam takir calisiyor. Simdi Console'da node server.js veyahut ne isim verdiyseniz calistirdiginizda;
"Nigs mom" adli bir output alacaksiniz :)

Ben hem telefondan hem kendi serverim olmadigindan localhostta calistiriyorum.

Yani benim durumumda '127.0.0.1:3000' de bana boyle bir cikti veriyor;

T3x9Df.jpg


2.parcada Express, Middleware, Webserver'in mantigi vesaire seyler gorecegiz.

Bu seriyi nodeJs ogrenmek isteyenler ve forumumuzda bu konuda ki dokuman azligindan dolayi hazirliyorum.​
 
Son düzenleme:

Phoique 7

Katılımcı Üye
14 Mar 2017
505
1
Manisa
javadan sonraki 2. yıkık dil.

Node.js bir dil değil, konuda da söylenildiği gibi platformdur. Günden güne popülerliği artan ve frontend javascript yazan kişilerin genelde tercih ettiği bir platformdur.

Kendisini uzun zamandır ufak projeler ve öğrenip anlamak için kullanıyorum. Gayet basit ve etkili. Hele ki developerlar düşünüp sen bununla uğraşma bak sana şöyle modül yazdım düşüncesiyle birsürü modülü mevcuttur. Elinize sağlık konu için.
 

design

Yeni üye
9 Ara 2007
22
0
Node.js bir dil değil, konuda da söylenildiği gibi platformdur. Günden güne popülerliği artan ve frontend javascript yazan kişilerin genelde tercih ettiği bir platformdur.

Kendisini uzun zamandır ufak projeler ve öğrenip anlamak için kullanıyorum. Gayet basit ve etkili. Hele ki developerlar düşünüp sen bununla uğraşma bak sana şöyle modül yazdım düşüncesiyle birsürü modülü mevcuttur. Elinize sağlık konu için.

yoo dildir, çünkü dil demek istedim, aksini de kanıtlayamazsın.
js ile yazılmış ve çoğu insan tarafından bir framework olarak algılanıyor olabilir, amma ben js'ten
yeni bir dil olarak sayılabilecek kadar farklı olduğunu düşündüğümden dil diyorum.
 
Moderatör tarafında düzenlendi:

ALcatraz'

Kıdemli Üye
30 May 2013
4,338
4
İstanbul
Node.js bir dil değil, konuda da söylenildiği gibi platformdur. Günden güne popülerliği artan ve frontend javascript yazan kişilerin genelde tercih ettiği bir platformdur.

Kendisini uzun zamandır ufak projeler ve öğrenip anlamak için kullanıyorum. Gayet basit ve etkili. Hele ki developerlar düşünüp sen bununla uğraşma bak sana şöyle modül yazdım düşüncesiyle birsürü modülü mevcuttur. Elinize sağlık konu için.

NodeJs bir platform, js ile yazılmış bir framework'tur.

Bu framework'un yazılma amacı javascript'in server-side olarak çalışmasına imkan sağlamaktı. Bunu bir kaç fantezisel bir framework veyahut modül olarak değilde, gerçekten sorunu çözmek için ortaya atıldığı için bu arkadaş oyle demek istemiştir. Mesela J#, J++ niye geliştirilmiş microsoft tarafından? C#'a geçiş daha kolay olsun efendime söyleyeyim bakın "Microsoft destekli Java" adı altında "fantezilerin babası" adi altında geliştirilmiş bir DİLDİR.

Şimdi bu loser'lik öyküsünden sonra, gerçek çözüm için yazılan ve yazıldığı dilin level atlamasinda büyük bir rol oynayan framework'ten bahsediyoruz.

Bir dil olmayabilir lakin, oyle düşünülmesine engel değildir.

Modül kısmında zaten bütün open-source language'lerde bu dediğin mevcut.
 

ihan3t

Kadim Üye
7 Şub 2012
5,018
22
yoo dildir, çünkü dil demek istedim, aksini de kanıtlayamazsın.
js ile yazılmış ve çoğu insan tarafından bir framework olarak algılanıyor olabilir, amma ben js'ten
yeni bir dil olarak sayılabilecek kadar farklı olduğunu düşündüğümden dil diyorum.

NodeJs bir platform, js ile yazılmış bir framework'tur.

Bu framework'un yazılma amacı javascript'in server-side olarak çalışmasına imkan sağlamaktı. Bunu bir kaç fantezisel bir framework veyahut modül olarak değilde, gerçekten sorunu çözmek için ortaya atıldığı için bu arkadaş oyle demek istemiştir. Mesela J#, J++ niye geliştirilmiş microsoft tarafından? C#'a geçiş daha kolay olsun efendime söyleyeyim bakın "Microsoft destekli Java" adı altında "fantezilerin babası" adi altında geliştirilmiş bir DİLDİR.

Şimdi bu loser'lik öyküsünden sonra, gerçek çözüm için yazılan ve yazıldığı dilin level atlamasinda büyük bir rol oynayan framework'ten bahsediyoruz.

Bir dil olmayabilir lakin, oyle düşünülmesine engel değildir.

Modül kısmında zaten bütün open-source language'lerde bu dediğin mevcut.


Dildir diyemezsin, adamlar kendileri bile diliz demiyor : "Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine."

.Net framework ve CLR bir dil mi? JVM bir dil mi? Hayır, runtime environment. Nodejs de aynı şekilde. Dil olan javascript.

Makaleye gelecek olursak, "Bence bu cok cool, teorik olarak Apache yada nginx'i bir kenara atip sadece Node.js'ye ihtiyac duyuyoruz." nginx bir kenara atılamıyor maalesef... Tek server düşünüldüğü için böyle söylenmiş. Uygulamayı scale edince ne olacak? Haliyle önüne bir load balancer gerekiyor.

Nodejs iyi güzel ama abartıldığı kadar bir olayı yok. Her ne kadar event tabanlı bir yapı kullansada single thread olan kısım sadece requetlerin karşılandığı event loop kısmı. O event loop un arkasında gene threadler var. He async I/O mantığıyla çalışıyor orası güzel. Ama zaten birçok dil bunu sağlıyor, öyle muhteşem bir farklılığı yok, zaten olsaydı herkes işi gücü bırakır nodejs e geçer bütün server maaliyetlerinden kar ederdi.

Nodejs güzel mi, öğrenilmeli mi? Neden olmasın. Günlük işlerimizin belirli bölümlerinde kullanıyoruz. İyi yanı var kötü yanı var.


 
Son düzenleme:

ALcatraz'

Kıdemli Üye
30 May 2013
4,338
4
İstanbul
Dildir diyemezsin, adamlar kendileri bile diliz demiyor : "Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine."

.Net framework ve CLR bir dil mi? JVM bir dil mi? Hayır, runtime environment. Nodejs de aynı şekilde. Dil olan javascript.

Makaleye gelecek olursak, "Bence bu cok cool, teorik olarak Apache yada nginx'i bir kenara atip sadece Node.js'ye ihtiyac duyuyoruz." nginx bir kenara atılamıyor maalesef... Tek server düşünüldüğü için böyle söylenmiş. Uygulamayı scale edince ne olacak? Haliyle önüne bir load balancer gerekiyor.

Nodejs iyi güzel ama abartıldığı kadar bir olayı yok. Her ne kadar event tabanlı bir yapı kullansada single thread olan kısım sadece requetlerin karşılandığı event loop kısmı. O event loop un arkasında gene threadler var. He async I/O mantığıyla çalışıyor orası güzel. Ama zaten birçok dil bunu sağlıyor, öyle muhteşem bir farklılığı yok, zaten olsaydı herkes işi gücü bırakır nodejs e geçer bütün server maaliyetlerinden kar ederdi.

Nodejs güzel mi, öğrenilmeli mi? Neden olmasın. Günlük işlerimizin belirli bölümlerinde kullanıyoruz. İyi yanı var kötü yanı var.



Zaten konuda da postumda da dil olmadığını belirtmişim;

"NodeJs bir platform, js ile yazılmış bir framework'tur."
"Bir dil olmayabilir lakin, oyle düşünülmesine engel değildir."

J#, J++'da örneğini verdiğim gibi "Böyle abartılı fantezileri bile dil adı altında topladıkları halde" şeklinde örnek verdim.

Nginx, apache'yi "teorik olarak" bir kenara atabiliriz demişim orada da.

Neyse engin bilgilerin için sagolasin dostum. :)
 

FoxZoby

Katılımcı Üye
19 Şub 2016
762
0
Dildir diyemezsin, adamlar kendileri bile diliz demiyor : "Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine."

.Net framework ve CLR bir dil mi? JVM bir dil mi? Hayır, runtime environment. Nodejs de aynı şekilde. Dil olan javascript.

Makaleye gelecek olursak, "Bence bu cok cool, teorik olarak Apache yada nginx'i bir kenara atip sadece Node.js'ye ihtiyac duyuyoruz." nginx bir kenara atılamıyor maalesef... Tek server düşünüldüğü için böyle söylenmiş. Uygulamayı scale edince ne olacak? Haliyle önüne bir load balancer gerekiyor.

Nodejs iyi güzel ama abartıldığı kadar bir olayı yok. Her ne kadar event tabanlı bir yapı kullansada single thread olan kısım sadece requetlerin karşılandığı event loop kısmı. O event loop un arkasında gene threadler var. He async I/O mantığıyla çalışıyor orası güzel. Ama zaten birçok dil bunu sağlıyor, öyle muhteşem bir farklılığı yok, zaten olsaydı herkes işi gücü bırakır nodejs e geçer bütün server maaliyetlerinden kar ederdi.

Nodejs güzel mi, öğrenilmeli mi? Neden olmasın. Günlük işlerimizin belirli bölümlerinde kullanıyoruz. İyi yanı var kötü yanı var.



Haklısın, Node.js her yerde kullanılabilecek bir şey değil.
 

ihan3t

Kadim Üye
7 Şub 2012
5,018
22
Zaten konuda da postumda da dil olmadığını belirtmişim;

"NodeJs bir platform, js ile yazılmış bir framework'tur."
"Bir dil olmayabilir lakin, oyle düşünülmesine engel değildir."

J#, J++'da örneğini verdiğim gibi "Böyle abartılı fantezileri bile dil adı altında topladıkları halde" şeklinde örnek verdim.

Nginx, apache'yi "teorik olarak" bir kenara atabiliriz demişim orada da.

Neyse engin bilgilerin için sagolasin dostum. :)

Özellikle konuyu baltalar gibi yorum yapan bir eleman vardı ona binayen yazdım yorumu dostum. Konu için eline sağlık, forumda farklı şeylere değinilmesi güzel.

Bıktım hala vb net konusu görmekten. Yeter yeteeer...
 

design

Yeni üye
9 Ara 2007
22
0
Dildir diyemezsin, adamlar kendileri bile diliz demiyor : "Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine."

.Net framework ve CLR bir dil mi? JVM bir dil mi? Hayır, runtime environment. Nodejs de aynı şekilde. Dil olan javascript.

Makaleye gelecek olursak, "Bence bu cok cool, teorik olarak Apache yada nginx'i bir kenara atip sadece Node.js'ye ihtiyac duyuyoruz." nginx bir kenara atılamıyor maalesef... Tek server düşünüldüğü için böyle söylenmiş. Uygulamayı scale edince ne olacak? Haliyle önüne bir load balancer gerekiyor.

Nodejs iyi güzel ama abartıldığı kadar bir olayı yok. Her ne kadar event tabanlı bir yapı kullansada single thread olan kısım sadece requetlerin karşılandığı event loop kısmı. O event loop un arkasında gene threadler var. He async I/O mantığıyla çalışıyor orası güzel. Ama zaten birçok dil bunu sağlıyor, öyle muhteşem bir farklılığı yok, zaten olsaydı herkes işi gücü bırakır nodejs e geçer bütün server maaliyetlerinden kar ederdi.

Nodejs güzel mi, öğrenilmeli mi? Neden olmasın. Günlük işlerimizin belirli bölümlerinde kullanıyoruz. İyi yanı var kötü yanı var.



Elbette diyebilirim, öne sürdüğün nedenler ise dediğimin karşıtını kanıtlayacak nitelikte değiller.
Kanıtlayabildiğin zaman gel koçum ;) ;)
 

ihan3t

Kadim Üye
7 Şub 2012
5,018
22
Elbette diyebilirim, öne sürdüğün nedenler ise dediğimin karşıtını kanıtlayacak nitelikte değiller.
Kanıtlayabildiğin zaman gel koçum ;) ;)

Sus, daha fazla anlatma, neden biliyor musun? İnanırım.

[ame]https://www.youtube.com/watch?v=gMdR52c8NDw[/ame]

Ben oyalıyorum, siz kaçın kurtarın kendinizi.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.