Yeni Başlayanlar İçin Node.js Kılavuzu (Sunucu Tarafı JavaScript)
Node.js - basit kelimelerle - sunucu tarafı JavaScript. Bugünlerde çok fazla vızıltı oluyor. Bunu duyduysanız veya öğrenmek ve biraz el ele almakla ilgileniyorsanız - bu gönderi tam size göre.
Peki sunucuda JavaScript kullanmanın tam olarak gereği nedir? Node.js kavramını netleştirmek için PHP gibi sıradan sunucu dilleriyle karşılaştırmak istiyorum. Node.js bir olaya dayalı sunucu yürütme prosedürü PHP'de çok iş parçacıklı yürütme yerine.
Daha fazla açıklamak için, fikir hakkında konuşacağız. Node.js nedir bazı ile birlikte hosting sağlayıcı önerileri ve kurulum ipuçları. JavaScript, jQuery ve Ajax için orta seviye bilgi gereklidir, ancak her şeyi daha kolay anlamanız ve üzerinde çalışmanız için örnekler de sunacağız, bu yüzden Node.js hakkında daha fazla bilgi edelim!
Bir olayı düşünelim:
İçeriği, yavaş olan başka bir web sunucusundan dinamik olarak yüklemeniz gereken bir web sitesini düşünün. PHP'de 2 şekilde yapabilirsiniz - basit bir dosyada kodlama ve başka bir komut dosyası olarak kodlama, sonra okuyuculu bir yaklaşımla yürütmek.
İlk yöntemde kod basit olmasına rağmen yürütme bir süre duraklar Yavaş web sunucusuna erişildiği noktada. İkinci yöntem performans durumunda daha optimize ama kodlaması zor ve çok yönlü bir yönetim ek yükü var. Bu durum, sunucu tarafı JavaScript dışındaki web programlama dillerinin çoğu için benzerdir, yani Node.js.
Node.js'deki fark nedir? Node.js’i anlamak için JavaScript'in tarayıcıya göre etkinlik tabanlı programlaması. Burada aynı teknolojiyi kullanıyoruz. Ayrı bir iş parçacığı kullanmak yerine, finish olayına işlev eklenmiş arasında “yavaş web sunucusu erişimi” Yukarıda belirtilen, böylece tam işlevsellik yukarıda belirtilen optimize edilmiş ikinci seçenekte, çok okuyuculu ek yük olmadan.
Node.js ile Başlarken
Node.js JavaScript’tir. İstemcideki JavaScript'in olay tabanlı işlevselliğini bir sunucuya neden kullanamıyoruz? Bu düşünce Node.js’nin gelişmesine yol açmış olabilir..
Bununla birlikte, Node.js’nin ana vurgusu - olay tabanlı asenkron fonksiyonlardır. Kullanır olay döngüsü G / Ç işlemlerini beklemek yerine (harici web servisine erişmek, donanıma erişmek).
Node.js hala yapabilir işlem gücünden yararlanın Sunucu başka bir işlem için beklerken. Bu Node.js yapar ölçeklenebilir milyonlarca eşzamanlı bağlantıya.
Bir Sunucuda JavaScript Nasıl Çalışır??
Node.js v8 ortamında çalışır - bu bir sanal makine veya bir JavaScript motoru JavaScript kodunu çalıştıran, bu yüzden barındırma için sıradan web barındırma kullanamazsınız. Sahip olanlara ihtiyacınız olacak. v8 ortamı.
İşte Node.js barındırma için bazı sağlayıcı önerileri:
- Bulut Dökümü
- Cloudnode
- DotCloud
- Duostack
Node.js kurulumu
Düğüm olacak Linux, Macintosh ve Solaris işletim sistemlerinde mükemmel çalışır. Windows'ta Cygwin öykünme katmanını kullanarak yükleyebilirsiniz. Windows'taki derlemelerden hiçbiri tatmin edici değil ancak çalışmakta olan bir şey elde etmek hala mümkün.
Seçenek 1: Kaynak Düğümünü kaynaktan oluşturma.
kullanım Yapmak
node.js dosyasını kurmak ve kurmak için (komut satırında aşağıdakileri yürütün). Git gerekli.
git clone --depth 1 git: //github.com/joyent/node.git cd düğümü git ödeme v0.4.11 dışa aktarma JOBS dışa aktarma = 2 mkdir ~ / local ./configure --prefix = $ HOME / yerel / düğüm make install echo 'dışa aktarma PATH = $ HOME / yerel / düğüm / bin: $ PATH' >> ~ / .profile echo 'dışa aktarma NODE_PATH = $ HOME / yerel / düğüm: $ HOME / yerel / düğüm / lib / node_modules' >> ~ / .profile kaynağı ~ / .profile
Seçenek 2: Node.js'i Paketten Kurmak
Mac kullanıcıları için, Node.js'i https://sites.google.com/site/nodejsmacosx/ adresinden paket olarak yükleyebilirsiniz..
Düğüm Kurulumu Testi
Başarılı Düğüm kurulumunuzu kontrol etmek için çok basit bir konsol olan "Merhaba Dünya" programını deneyebiliriz. "Adlı bir dosya oluşturuntest.js"ve aşağıdaki kodu içine yaz.
var sys = zorunlu ("sys"); sys.puts ("Merhaba Dünya");
Kod açıklaması:
Yükler sys
değişkene sınıf sys
. Daha sonra kullanır sys
Konsol görevlerini gerçekleştirmek için nesne. sys.puts
şuna benzer bir komuttur: cout
C ++ 'da yukarıdaki betiği çalıştırmak için komut istemine gidin ve aşağıdaki komutu çalıştırın:
düğüm test.js
Eğer kurulumunuz başarılı olursa ekranda merhaba bir dünya çıktısı alacaksınız..
HTTP Sunucusu Oluşturma
Şimdi Node.js. kullanarak web sunucusu üzerinden bir "Merhaba Dünya" yaratma zamanı. İşte ne yapacağız - biz çıktı veren bir sunucu oluşturmak “Selam Dünya” 8080 numaralı bağlantı noktasındaki localhost'a URL ne olursa olsun, size bir fikir vermek Etkinlik olduğu.
Kodları:
var sys = requ ("sys"), my_http = requ ("http"); my_http.createServer (function (request, response) sys.puts ("Kick aldım"); response.writeHeader (200, "Content-Type": "text / plain"); response.write ("Hello World "); response.end ();). dinle (8080); sys.puts ("8080'de Çalışan Sunucu");
Kod açıklaması:
Node.js'deki en ilginç kısım olaya dayalı programlamasıdır. Bir HTTP sunucusu oluşturmak için HTTP kütüphanesi, bu yüzden ileriye gidiyoruz ve kullanarak ekliyoruz my_http
. Sunucu işlevini kullanarak yaratırız:
my_http.createServer (fonksiyonu (istek, cevap) ) dinlemek (8080).;
İlk argüman olarak verilen işlev yürütülür. 8080 portunda bir olay tetiklendiğinde, yani fonksiyonun kendisi düğümün 8080 numaralı bağlantı noktasında bir olayı dinlemesini önerir. Bunu tespit etmek için bir “Tekmeledi” Bir istek alındığında konsol ekranında görüntülenecek bir mesaj.
istek
nesne içeriyor Sunucuya yapılan istekle ilgili tüm bilgiler. Örneğin, URL dizesini içerir. tepki
nesne, nesnenin Sunucudan gelen yanıtı işler.. İlk önce cevabın başlığını bir metin / düz
içerik, sonra çıktılar “Selam Dünya“, sonra çıkış akışını sonlandırın. 200 durum yanıtı.
Peki, yukarıdaki örnek çok basit bir örnektir, ancak aynı sunucu için tarayıcıya verdiğimiz URL’nin ne gibi bir çıktı aldığını görebiliriz. “Selam Dünya”.
Basit statik dosya sunucusu oluşturma
Bir sonraki derste basit bir statik dosya sunucusu oluşturalım.
Kodları:
var sys = zorunlu ("sys"), my_http = zorunlu ("http"), yol = zorunlu ("yol"), url = zorunlu ("url"), filesys = zorunlu ("fs"); my_http.createServer (işlev (istek, yanıt) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (var) ) if (! var) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Bulunamadı \ n"); response.end (); else filesys.readFile (full_path, "ikili", işlev (err, dosya) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (err + "\ n"); response.end (); else response.writeHeader (200); response.write (dosya, "ikili"); response.end ();););). (8080) dinlemek; sys.puts ("8080'de Çalışan Sunucu");
Kodları açıklama:
Yukarıdaki kod oldukça basittir, blok olarak tartışacağız..
var sys = zorunlu ("sys"), my_http = zorunlu ("http"), yol = zorunlu ("yol"), url = zorunlu ("url"), filesys = zorunlu ("fs");
Tüm bu kütüphaneler program için gereklidir. Kullanımı aşağıdaki kodda açık olacak.
var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path);
istek
nesnesi daha önce tartıştığımız gibi istek detaylarına sahiptir. Kullanıyoruz ayrıştırmak
almak için eklediğimiz URL sınıfının işlevi yol adı
istek URL’sinin Yol adını aldıktan sonra dosyanın tam yolunu bulmak için geçerli çalışma dizininin yolu ile birleştiriyoruz..
URL’lere katılmak için adında bir fonksiyon var. katılmak
yol kütüphanesinde.
path.exists (full_path, fonksiyon (mevcut)
Tam yolu aldıktan sonra, yolun fonksiyon tarafından mevcut olup olmadığını kontrol ederiz. var
. Kontrol yapıldıktan sonra geri çağırma işlevi çağrılır ve ikinci argüman olarak geçirilir..
if (! var) response.writeHeader (404, "Content-Type": "metin / düz"); response.write ("404 Bulunamadı \ n"); Response.End (); else filesys.readFile (full_path, "ikili", işlev (err, dosya) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write ( err + "\ n"); response.end (); else response.writeHeader (200); response.write (dosya, "ikili"); response.end ();;
Şimdi, geri çağırma işlevinde eğer dosya yoksa, "404 Sayfa Bulunamadı" hata.
Sayfa bulunursa, dosyayı okuduk. readFile
dosya sisteminde işlev. Ayrıca geri arama işlevini görebiliriz. readFile
orada tanımlanmış fonksiyon. Dosyayı okumakta hata yoksa o zaman görüntülenir. Bir hata varsa, hata metniyle birlikte 500 durumu döndürülür.
Ayrıca, bir önceki öğreticinin kodlarını, bir sonraki öğreticide veya daha sonra kullanmak üzere kullanabilmeniz için bir işleve sarmanızı öneririm..
var sys = zorunlu ("sys"), my_http = zorunlu ("http"), yol = zorunlu ("yol"), url = zorunlu ("url"), filesys = zorunlu ("fs"); my_http.createServer (işlev (istek, yanıt) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (var) ) if (! var) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Bulunamadı \ n"); response.end (); else filesys.readFile (full_path, "ikili", işlev (err, dosya) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (err + "\ n"); response.end (); else response.writeHeader (200); response.write (dosya, "ikili"); response.end (););); my_http. createServer (function (request, response) var my_path = url.parse (request.url) .pathname; load_file (my_path, response);). listen (8080); sys.puts ("8080'de Çalıştırılıyor");
Bizi izlemeye devam edin !
Bu kadar. Umarım bu size Node.js. hakkında iyi bir fikir verir. Bir sonraki makalede, nasıl yapılacağını göstereceğim Node.js'i kullanarak Facebook beğenilerinizi yükleyin ve görüntüleyin. Bizi izlemeye devam edin!
Editörün Notu: Bu gönderi tarafından yazılmıştır Geo Paul Hongkiat.com için. Geo, PHP, Codeigniter, WordPress, jQuery ve Ajax ile çalışmaktan hoşlanan bağımsız bir Web / iPhone geliştiricisidir. PHP'de 4 yıllık deneyime ve iPhone uygulama geliştirme alanında 2 yıllık deneyime sahiptir..