Acını nasıl hissediyorum!
Çoğu kişi gibi, ben de Node.js'nin özüne ulaşmakta zorlandım çünkü çoğu insan Node'un yalnızca yararlı buldukları kısmı hakkında yazıyor / konuşuyor - ve ilginç buldukları kısım genellikle Node'un birincil faydasından ziyade ikincil bir faydası. amaç. İnsanların Node'un sadece bir JavaScript çalışma zamanı olduğunu söylemesinin çılgınca olduğunu söylemeliyim. Node'un JavaScript kullanımı ve V8 çalışma zamanını seçmesi, Node'un geliştiricilerinin çözmek istediği problem için en iyi araçların amacına ulaşması anlamına gelir .
Düğümün birincil amacı, bir web uygulamasındaki kullanıcı olaylarının yönetimini daha verimli hale getirmekti. Yani Düğüm ezici bir çoğunluklabir web uygulamasının arka ucunda kullanılır. Olay yönetimi, bu kullanıcı olayları için sunucu makinede bir şeyin dinlemesini gerektirir. Bu nedenle, her olayı uygun işleyici betiğine yönlendirmek için bir http sunucusu kurulmalıdır. Düğüm, bir sunucuyu kullanıcı istekleri için ayrılmış bir bağlantı noktasında dinlemek üzere hızlı bir şekilde kurmak için bir çerçeve sağlar. Düğüm, olay işleme için JavaScript kullanır çünkü JavaScript geri arama işlevlerine sahiptir: bu, bağımlı bir görevin sonucu döndürülene kadar bir görevin askıya alınmasına izin verir. Diğer pek çok dilde bu özellik yoktur ve olmayanlar Google'ın V8 çalışma zamanı kadar verimli bir tercümana sahip olmayabilir. Çoğu web geliştiricisi JavaScript'i bilir, bu nedenle Node ile ek dil öğrenimi olmaz. Dahası, geri arama işlevlerine sahip olmak , tüm kullanıcı görevlerinin tek bir iş parçacığına yerleştirilmesine olanak tanırVeritabanına veya dosya sistemine erişim gerektiren görevlere açık engelleme uygulanmadan. Ve bu, Node'un yoğun eşzamanlı kullanım altında üstün yürütme verimliliğine götüren şeydir - gelişiminin birincil amacı.
Node kullanıcılarının hızlı bir şekilde arka uç kodu yazmasına yardımcı olmak için, Node'un geliştiricileri ayrıca rutin görevler (ör. HTTP istekleri, dize (de) kodlama, akışlar vb. İle ilgili konular) ve NPM (Node Package Manager) deposu için yerleşik bir JS kitaplığı düzenledi. : Bu, çeşitli standart ve özel işlevler için açık kaynaklı, kullanıcı tarafından sağlanan komut dosyası paketleri setidir. Tüm Düğüm projeleri, NPM paketlerinin oluşturulan npm install komutu aracılığıyla bir projeye aktarılmasına izin verir .
Node aracılığıyla işlenen kullanıcı istekleri, kimlik doğrulama, veritabanı sorgulama, içerik yönetimi (Strapi CMS) vb. Gibi web uygulamasının ihtiyaç duyduğu şeyler olacaktır. Tüm bunlar Node portuna gönderilecektir. (Veritabanından alınan verilerin analizinin çok fazla CPU zamanı aldığı durumlarda, bu tür bir işlem en iyi şekilde ayrı bir iş parçacığına yerleştirilir, böylece daha basit kullanıcı isteklerini yavaşlatmaz.) Diğer kullanıcı istek türleri, örneğin başka bir web sayfasını yüklemek için , indirilen CSS / JS / resim dosyaları, vb., tarayıcı tarafından web sunucusu programının (Apache, NGinx, vb.) bunları işleyeceği sunucu makinesindeki varsayılan bağlantı noktalarına gönderilmeye devam edilecektir.
Bu nedenle, pratikte Node, temelde hızlı sunucu oluşturma ve olay işleme için bir çerçevedir, ancak web sunucusu programının yalnızca bazı işlevlerinin yerine geçer .
Node'un diğer arka uç olmayan kullanımları, yalnızca bir veya diğer özelliklerinden yararlanır, örneğin V8 motoru. Örneğin, ön uç oluşturma araçları Grunt ve Gulp, SASS'yi CSS'ye dönüştürmek, CSS / JS dosyalarını küçültmek, görüntü boyutunu / yüklemeyi optimize etmek vb. İçin kodlanabilen bir derleme komut dosyasını işlemek için Node.js kullanır. Ancak bu tür bir çalışma gerçekten Yalnızca Node'un yan ürün kullanımı, web uygulamaları için verimli arka uç işlemleri yapmak için temel kullanımı değil.