[KAPLAN]
|
Node.js Nedir ?
Node js, çeşitli araçlar ve uygulamalar geliştirmek için açık kaynak kodlu, çapraz platformlu bir JavaScript çalışma zamanı ortamıdır

Node js bir JavaScript çerçevesi olmasa da, temel modüllerinin birçoğu JavaScript ile yazılmıştır ve geliştiriciler JavaScript'te yeni modüller yazabilir Çalışma zamanı ortamı JavaScript'i Google'ın V8 JavaScript motorunu kullanarak yorumluyor
Node js, asenkron G / Ç kapasitesine sahip, etkinliğe dayalı bir mimariye sahiptir Bu tasarım seçenekleri, birçok giriş / çıkış işlemi ile gerçek zamanlı Web uygulamaları (ör , Gerçek zamanlı iletişim programları ve tarayıcı oyunları) ile Web uygulamalarında çıktı ve ölçeklenebilirliği optimize etmeyi amaçlamaktadır
Node js Vakfı tarafından yönetilen Node js dağıtılan geliştirme projesi, Linux Vakfı'nın İşbirlikçi Projeler programı tarafından kolaylaştırılmıştır Node js yazılımının kurumsal kullanıcıları arasında GoDaddy, Groupon, IBM, LinkedIn, Microsoft, Netflix, PayPal, Voxer, Walmart, Yahoo ! ve Cisco Sistemleri
Node js Node js'in yaratıcısı Ryan Dahl, aslen 2009'da Ryan Dahl tarafından yazılmıştır İlk sürüm yalnızca Linux'u destekledi Gelişimi ve bakımı Dahl tarafından yönetildi ve daha sonra Joyent tarafından desteklendi Dahl, Flickr'da bir dosya yükleme ilerleme çubuğu gördükten sonra Node js'yi yaratmak için esin kaynağı oldu Tarayıcı, dosyanın ne kadarının yüklendiğini bilmiyordu ve Web sunucusunu sorgulamalıydı Dahl daha kolay bir yol arıyordu
Dahl, 8 Kasım 2009'da Avrupa JSConf açılışında projeyi gösterdi Node js, Google'ın V8 JavaScript motoru, bir olay döngüsü ve düşük seviye bir G / Ç API'sini birleştirdi [27] Proje ayakta alkışladı Ocak 2010'da, npm adlı Node js ortamı için bir paket yöneticisi tanıtıldı Paket yöneticisi, programcıların Node js kütüphanelerinin kaynak kodunu yayınlamasını ve paylaşmasını kolaylaştırır ve kütüphanelerin kurulumunu, güncellenmesini ve kaldırılmasını basitleştirmek için tasarlanmıştır Haziran 2011'de Microsoft ve Joyent Node js'in yerli bir Windows sürümünü uyguladılar Windows'u destekleyen ilk Node js, Temmuz 2011'de piyasaya çıktı Ocak 2012'de Dahl, kenara çekildi ve projeyi yönetmek için iş arkadaşını ve npm yaratıcısı Isaac Schlueter'i tanıttı Ocak 2014'te Schlueter, Timothy J Fontaine'in projeye liderlik edeceğini açıkladı Aralık 2014'te Fedor Indutny, iO js'yi başlattı, bir Node js çatalı başladı Joyent'in yönetimi üzerindeki iç çatışma nedeniyle, io js ayrı bir teknik komite ile açık bir yönetişim alternatifi olarak yaratılmıştır Node js'den farklı olarak, yazarlar io js'yi Google V8 JavaScript motorunun en yeni sürümleriyle güncel tutmayı planladılar Şubat 2015'te tarafsız Node js Vakfı oluşturma niyeti ilan edildi Haziran 2015'e kadar, Node js ve io js toplulukları, Node js Vakfı kapsamında birlikte çalışmaya oy verdiler Eylül 2015'te, Node js v0 12 ve io js v3 3 düğüm v4 0'a tekrar birleştirildi Bu, V8 ES6 özelliklerini Node js'ye getirdi ve uzun vadeli bir destek sürümü sağladı 2016'dan itibaren, io js web sitesi, geliştiricilerin Node js'ye geri dönmelerini ve birleşmeden dolayı başka yayınların planlanmadığını önermektedir [40] Genel Açıklama [değiştir] Node js, JavaScript'i ve çeşitli temel işlevleri ele alan bir "modül" koleksiyonunu kullanarak Web sunucuları ve ağ araçları oluşturulmasına izin verir
Modüller, dosya sistemi G / Ç, ağ (DNS, HTTP, TCP, TLS / SSL veya UDP), ikili veri (tampon), şifreleme fonksiyonları, veri akışları ve diğer temel fonksiyonlar için sağlanmaktadır Node js'nin modülleri, sunucu uygulamalarını yazmanın karmaşıklığını azaltmak için tasarlanmış bir API kullanır Node js uygulamaları Mac OS X, Microsoft Windows, NonStop, ve Unix sunucuları üzerinde çalışabilir Alternatif olarak CoffeeScript (bir JavaScript alternatifi), Dart veya Microsoft TypeScript (kuvvetle biçimlendirilmiş JavaScript biçimleri) veya JavaScript'e derleyebilecek başka herhangi bir dil ile yazılabilirler Node js öncelikle Web sunucuları gibi ağ programlarını PHP'ye benzer hale getirmek için kullanılır Node js ve PHP arasındaki en büyük fark, PHP'deki işlevlerin çoğunun tamamlanıncaya kadar engellenmesidir (komutlar önceki komutların tamamlanmasından sonra yürütülür); buna karşın Node js'deki işlevler engellemez (komutlar paralel olarak yürütülür ve kullanır) Sinyal tamamlama veya arıza için geri arama) Platform mimarisi Node js, web sunucularına olay odaklı programlama getirerek, JavaScript'te hızlı web sunucularının geliştirilmesini sağlar Geliştiriciler, bir görevin tamamlandığını bildirmek için geri arama kullanan basitleştirilmiş bir olay odaklı programlama modeli kullanarak, iş parçacığı kullanmadan son derece ölçeklenebilir sunucular oluşturabilirler Node js, eşzamanlılık birçok sunucu tarafı programlama dilinde zordur ve genellikle düşük performansa neden olduğu için oluşturulmuştur Node js bir betik dili (JavaScript) kolaylığını Unix ağ programlama gücüyle birleştirir Node js Google V8 JavaScript motorunda kuruldu, çünkü BSD lisansı altında açık kaynak kodlu, son derece hızlı ve HTTP, DNS, TCP gibi internet temelleri konusunda yeterli bilgiye sahipti Ayrıca, JavaScript iyi bilinen bir dildir ve Node js'ye tüm web geliştirme topluluğunun derhal erişebilmesini sağlar
Teknik detaylar
Node js, olay döngüsü adı verilen bir döngüde gelen istekleri işleyen bir Javascript çalışma zamanı ortamıdır
Threading
Node js bir çalışır tek bir iş parçacığı kullanarak, engellenmeyen I / O iş parçacığı maliyeti ödemeden eşzamanlı bağlantı onbinlerce destek sağlayan, aramaları bağlam anahtarlama [61] kullandığı tüm istekleri arasında tek bir iş parçacığı paylaşmak tasarım gözlemci desen I / O gerçekleştiren herhangi bir fonksiyon kullanmanız gerekir derece eşzamanlı uygulamalar, bina için tasarlanmıştır geri arama Tek iş parçacıklı olay döngü karşılamak amacıyla, node js kullanan libuv sırayla engellenmeyen asenkron I / O bazı operasyonlarını sorumlu bir sabit boyutlu ThreadPool'da kullanır kitaplığı [4]
Bu tek iş parçacıklı yaklaşımın dezavantajı node js izin vermez ki dikey ölçekleme sayısını artırarak CPU çekirdekleri gibi küme olarak ek bir modül, kullanmadan üzerinde çalıştığı makinenin [62] StrongLoop Process Manager [ 63] ya PM2 [64] Ancak, geliştiriciler libuv threadpool parçacığı varsayılan sayısını artırabilirsiniz; Bu konuları sunucu işletim sistemi tarafından çoklu çekirdek dağılmış olması muhtemeldir
Node js paralel görevler Yürütme bir iş parçacığı havuzu tarafından işlenir ana iş parçacığı arama fonksiyonları parçacığı havuzu çekme içinde ipler ve yürütmek paylaşılan görev sırası görevleri göndermek Kendiliğinden engellenmeyen ağ gibi sistem işlevlerini doğal kendi iş parçacığı üzerinde bir engelleme şekilde dosya G / Ç çalıştırmak gibi sistem fonksiyonlarını bloke ederken, soket engellenmeyen tarafı çekirdek çevirir parçacığı havuzu, bir iş parçacığı bir görevi tamamladığında, sırayla uyanır ve kayıtlı geri arama yürütmek bu ana iş parçacığı bildirir callbacks ana iş parçacığı üzerinde seri olarak işlenir bu yana, uzun ömürlü hesaplamalar ve diğer CPU bağlı görevleri tamamlanana kadar tüm olay döngü donacak
V8
V8 için inşa JavaScript yürütme motoru Google Chrome ve açık kaynaklı 2008'de Yazılı Google tarafından C ++ , V8 yerli JavaScript kaynak kodu derler makine koduna gerçek zamanlı olarak yorumlamak yerine
Node js kullanır libuv asenkron olayları işlemek için Libuv, Windows ve hem ağ ve dosya sistemi işlevleri için bir soyutlama katmanı POSIX NonStop ve Unix Linux, Mac OS X, ÖSS gibi sistemleri tabanlı
Node js temel işlevi bir JavaScript kütüphanede bulunur C ++ ile yazılmış node js bağlamaları, birbirlerine ve işletim sistemi bu teknolojileri bağlayın
Paket yönetimi
npm node js sunucu platformu için önceden yüklenmiş paket yöneticisidir Üçüncü taraf node js programlarının kurulumunu ve yönetimini organize npm kayıt node js programları yüklemek için kullanılır ile npm karıştırılmamalıdır değildir CommonJS () gerektiren deyimi Bu yük koduna kullanılmaz; bunun yerine, komut satırından kod bağımlılıkları kodu yüklemek ve yönetmek için kullanılır Gibi npm kayıt defterinde bulunan paketler basit yardımcı kütüphaneleri arasında olabilir Underscore js Grunt gibi koşucuları göreve
Birleştirilmiş API
Node js bir tarayıcı ile kombine edilebilir, (örneğin, bir veri tabanı destek JSON veri Postgres , [67] MongoDB veya CouchDB ve benzeri) JSON birleşik bir JavaScript geliştirme yığını için Esasen gibi sunucu tarafı geliştirme desenleri nelerdi adaptasyonu ile MVC , MVP , MVVM , vb node js izin verir yeniden kullanımı istemci tarafı ve sunucu tarafı arasında aynı modeli ve servis arayüzü
Event Loop
Bir bağlantı kurulduğunda bildirilir ve işletim sistemi bir geri verecektir ki node js işletim sistemi ile kendini kaydeder Node js çalışma zamanı içinde, her bağlantı bir küçük yığın ayırma Geleneksel olarak, nispeten ağır işletim süreçleri ya da konuları her bağlantıyı ele Node js yerine süreçlerin ya da parçacığı, ölçeklenebilirlik için bir olay döngü kullanır [68] Diğer olay kaynaklı sunuculara aksine, node js olay döngüsü açıkça çağrılacak gerek yoktur Bunun yerine geri çağrıları tanımlanır ve sunucu otomatik geri arama tanımının sonunda olay döngüye girer Yapılacak başka callbacks olduğunda node js olay döngü çıkar
|