Bir ton dosya G / Ç işleminde özellikle güçlüdür ve bir ton ağ iletişimini de iyi işlemesini beklerim. Soket tahrikli uygulamalar için özellikle popüler görünüyor. Akılda tutulması gereken önemli şey, ihtiyaçlarınız mevcut kütüphaneler tarafından karşılanmıyorsa (çok sayıda vardır) JS komutlarına bağlanabilen bazı C'ye dalmanız gerekebilir. Ayrıca başka Düğüm işlemleri de ortaya çıkarabilirsiniz, ancak bunun bir çok vergi verebileceğinden şüpheleniyorum (sanırım - yanlış olabilir - bunların her biri için ortaya çıkan bir V8 örneği var).
JS tek iş parçacıklı ve engellemelidir, yani işlev çağrısı tamamlanana kadar başka hiçbir şey yürütülemez. Bu, JS'nin istenen bir özelliğiydi, temel olarak tüm iş parçacığı ve kuyruk endişelerini elinizden aldı. JS, C / C ++ öğelerinin kaputun altında daha çok iş parçacıklı bir şekilde çalışmasını engellemez, bu nedenle JS'nin rolü gerçekten daha fazla mimari / habercidir. Görüntü işliyorsanız, senkronize JavaScript komutlarıyla bunu işlemek istemezsiniz çünkü uygulamanızdaki veya sunucunuzdaki diğer her şey bitene kadar engellenir. Fikir, bir görüntünün bağlı C / C ++ işlevselliği tarafından işlenmesini ve ardından görüntünün işlenmesi bittiğinde 'done' olayına yanıt vermenizdir.
Bu, herhangi bir Node.js uygulamasındaki JS'nin büyük ölçüde olay ve geri arama odaklı olmasını gerektirir veya muhtemelen çok kötü performans gösterir. Böylece, Düğümde daha sonra kullanmak üzere bir işlev verilmeyen çok fazla yöntem çağrısı görmezsiniz. Düğümde çok hızlı bir şekilde netleşen bir şey, geri arama piramidini işlemek için bir yol bulamazsanız, çirkin bir dünyaya girmenizdir. Örneğin
//event CBs are more DOM-style than Node style and this isn't built-in Node file I/O
//keeping it simple and quick since I'll just get Node stuff wrong from memory
file.get('someFile.txt', function(e){
e.fileObj.find('some snippet', function(e){
someFinalCallBackHandler( e.snippetLocations );
} );
} );
Neyse ki bunu daha iyi ele almak için birçok araç ve örnek var. Çoğu, vaat mekanizmaları etrafında dönme eğilimindedir ve sadece birbirlerinin geri çağrı durumlarına, çirkin piramit eşyalarını sizin için kaputun altında yapan bir dizide yanıt vermek amacıyla bir dizi işlevi zincirleme eğilimindedir.
Şahsen, JS'yi yüksek seviyede ve C / C ++ 'ı kroma daha yakın hale getirmekten duyduğum aşkı seviyorum. Bu nihai kombinasyon ve C öğrenmeye başlamam için bana ilham verdi. Ve biraz araştırma yapana kadar kütüphane potansiyeli eksikliğinin sizi korkutmasına izin vermeyin. Düğüm kütüphaneleri çok hızlı bir şekilde üretilmekte ve çok hızlı olgunlaşmaktadır. Eğer son derece alışılmadık bir şey yapmıyorsanız, birisinin kapladığı iyi.
Rails'ten en büyük fark, JS'nin asla olduğu gibi raylarda bulunmamasıdır. Biz sahip olmak için kodlama eğilimindedir, ancak çok hızlı bir şekilde istiyorum, bu yüzden faktör ile kendinizi asmak için ip var ve mimari son yıllarda JS oldukça DIY oldu. Ben buna özgürlük diyorum, ama bunun pek çok geliştirici için ideal olmadığını anlıyorum.
Ayrıca, Mac dışında bir şeye yüklemeye çalıştığınız için, Node.js'de asla bir "mücevher" problemi yaşamayacaksınız. İstemci tarafı web geliştiricileri, bağımlılık sorunlarını hor görüyor ve bu noktada çok sayıda Node çekirdeği geliyor. Her popüler platformda 5 dakika veya daha kısa bir süre içinde kutudan çıkmazsa, genellikle onu çöker ve fırlatırız. Henüz çalışmasını sağlamak için özel bir şey yapmam gereken popüler bir modülle karşılaşmadım. Paket sistemi mükemmel.
Ancak temel sorunuza daha açık / özlü bir şekilde cevap vermek için: Arka plan süreçleri ile iyi mi?
Evet, Düğüm temelde bir uygulamayı etkinlikler ve geri aramalar aracılığıyla yönlendirmenin bir yolu olan arka plan süreçleri IS'dir.