2010-07-26 21 views
10

एरलांग में मैं तुरंत 'नोड' की धारणा को समझने में सक्षम था - एक आत्मनिर्भर एरलांग वीएम। मैं erl -name gandalf -setcookie abc के साथ एक मशीन पर एक नोड शुरू कर सकता हूं, और erl -name bilbo -setcookie abc के साथ एक और मशीन (उसी लैन पर) पर एक और नोड शुरू कर सकता हूं। मैं फिर गैंडफ पर प्रक्रियाओं को जन्म दे सकता था जो बिल्बो पर अन्य प्रक्रियाओं के साथ जादुई रूप से संवाद करेगा। अब, क्योंकि मैं अपनी एर्लैंग प्रक्रियाओं से एनिमेटेड ग्राफिकल परिणामों के साथ एक जाजानी वेबपृष्ठ की सेवा करना चाहता था, इसलिए मैंने कुछ जावास्क्रिप्ट उठाया और jQuery सीखा। अभी भी एक विनम्र पडूवान, लेकिन मैं समझता हूं कि कैसे जावास्क्रिप्ट चीजों की योजना में फिट बैठता है।node.js में नोड वास्तव में क्या है?

मैं हाल ही में node.js में आया और एक (बुराई) आवाज फुसफुसाहट शुरू हुई: 'यह है! अब आप जावास्क्रिप्ट के साथ सबकुछ कर सकते हैं! एरलांग और गार्ड और अवधियों को भूल जाओ, एक ऐसी भाषा से चिपके रहें जो हर कोई उपयोग करता है।

मैंने दस्तावेज़ों को थोड़ा सा पढ़ा है, लेकिन मुझे अभी भी समझ में नहीं आता कि नोड node.js. में क्या है। क्या मुझे एक http सर्वर चलाने की ज़रूरत है और यह मेरा नोड बन जाता है? क्या होगा यदि मुझे http पसंद नहीं है, या मुझे परवाह नहीं है कि कैसे ग्वाल्फ़ ब्लीबो से बात करता है - यही वह है जो मुझे एर्लांग में पसंद है। शायद मैं नाई: vely उम्मीद है कि node.js जावास्क्रिप्ट चीनी के साथ erlang है?

+9

"मैं हाल ही में नोड.जेएस में आया और एक (बुराई) आवाज फुसफुसाहट शुरू हुई" - शायद यह डगलस क्रॉकफोर्ड था। –

+0

शायद, लेकिन केवल बुराई आवाज ने यह भी कहा कि अगर उपयोग करने के लिए कभी नहीं ++ या -। –

+0

या हमेशा विशेष रूप से चार रिक्त स्थान, नहीं 2 नहीं 3, और definantly नहीं एक \ t के साथ मांगपत्र ... – Rixius

उत्तर

4

जैसा कि मैं इसे समझता हूं, एक नोड.जेएस नोड वी 8 इंजन का उदाहरण है जिसमें नोड.जेएस रनटाइम और इवेंट-लूप चल रहा है। जबकि नोड.जेएस रनटाइम आपको बहुत तेज़ी से और HTTP अनुरोधों को संसाधित करने की क्षमता देता है, यह अनिवार्य नहीं है; यह वास्तव में किसी भी प्रकार के एसिंक्रोनस I/O को संभालने में बहुत अच्छा है।

मुझे एर्लांग के बारे में इतना कुछ पता नहीं है, लेकिन मेरी सतही समझ यह है कि इसकी बड़ी ताकत उच्च-समेकन कंप्यूटिंग है। नोड.जेएस उसमें विशेषज्ञ नहीं है, प्रति से। इसका दिल "घटना I/O" है, जो अतुल्यकालिक I/O के साथ अच्छी तरह से और साफ से व्यवहार करता है।

7

नोड.जेएस के पास एरलांग/ओटीपी की तुलना में Twisted के साथ आम बात है। Node.js केवल एक सिंगल थ्रेडेड SEDA इवेंट लूप है। जब वितरण, हॉट कोड रीलोडिंग और प्रक्रियाओं के माध्यम से स्केलेबिलिटी की बात आती है तो नोड.जेएस की तुलना में कुछ भी नहीं है, यह "जावास्क्रिप्ट चीनी के साथ एरलांग"

1

नोड में कोई "नोड" नहीं है। js

के रूप में उल्लेख किया है, जब आप

node my_script.js 

आप वी 8 जावा स्क्रिप्ट दुभाषिया (जो अपने जीवन भर के लिए एक कोर का उपयोग किया जाता है) का एक उदाहरण चल रहे हैं चलाते हैं।

7

शायद आपके एरलांग ज्ञान के कारण आपने सोचा था कि किसी भी तरह से नोड.जेएस को "नोड्स" (एरलांग नोड्स के रूप में) के साथ कुछ करना था, लेकिन यह सिर्फ नाम है।

नोड.जेएस के साथ मुख्य विचार यह है कि आप सभी महंगे I/O संचालन को रोकते हैं और उन परिचालनों के परिणामस्वरूप कॉलबैक असाइन करते हैं। कारण यह है कि I/O इस समय चल रही (केवल) प्रक्रिया को अवरुद्ध करता है। Node.js आपके लिए यह संभाल लेंगे, यह देखते हुए कि आप उचित तरीके से कोडिंग कर रहे हैं।

result = SQL.query("EXPENSIVE SELECT HERE") 
doSomething(result); 
moreStuff(); // This line must wait until the previous ones are completed. 

नोड में आप एक बहुत ही अलग तरीके से इस कोड होगा::

SQL.query("EXPENSIVE SELECT HERE", function(result) { 
    doSomething(result); 
}); 
moreStuff(); // This line executes inmediately 

आप अपने नोड में गलत कोड है, तो

इस का एक आसान उदाहरण एक डेटाबेस कॉल है।js स्क्रिप्ट, जैसे:

while(true) { } 

तो फिर तुम प्रक्रिया अवरुद्ध कर रहे हैं और यह वर्तमान एक से अधिक अनुरोधों को हैंडल करने में सक्षम नहीं होगा, इसलिए में Node.js ऊपर दिशा निर्देशों का पालन करना अनिवार्य है।

संबंधित मुद्दे