2012-07-03 15 views
79

का उपयोग कर वेबसाइट बनाने का सर्वोत्तम अभ्यास मैं सोच रहा था कि कोई भी नोड.जे.एस. के साथ स्क्रैच से वेबसाइट विकसित करने के बारे में कैसे जाएगा। मैं समझता हूं कि मैं संभवतः कर सकता हूं, लेकिन मुझे सर्वोत्तम डिज़ाइन अभ्यास में रूचि है।Node.js

मैं करने के लिए इस सैद्धांतिक वेबसाइट की जरूरत है:

  1. AJAX का एक बहुत करते हैं
  2. बनें बहुत स्पष्ट
  3. अपेक्षाकृत छोटे बनें
  4. कनेक्ट करने के लिए ... चलो एक MySQL सर्वर
मान लीजिए

PHP में, एक बहुत छोटी वेबसाइट बनाना बहुत सरल था - मैंने अपाचे और एक MySQL सर्वर पर PHP सेट अप किया और फिर कुछ करें जैसे:

  • includes/db/ जो डाटाबेस, और इसलिए
  • includes/layout/ जो footer.php, header.php की तरह सामान था पर आम डाटाबेस संबंधित कार्यों के साथ एक फ़ाइल को जोड़ने के लिए connect.php है, और दूसरी लेआउट संबंधित सामान
  • includes/users/ उपयोगकर्ता संबंधित क्रियाओं
  • संभाल करने

फिर पीएचपी बस आप एक वेबसाइट बनाने के लिए एक साथ पृष्ठों का निर्माण और इन फ़ाइलों शामिल कर सकते हैं - मैं की तरह कुछ जा सकते हैं:

<?php 
    require_once('inclues/users/user_session.php'); 
    require_once('inclues/db/connect.php'); 
    require_once('inclues/design/header.php') 
?> 

// Other php or html or related content relating to the page 

<?php 
    require_once('inclues/.../footer.php'); 
?> 

मैं सोच रहा था क्या Node.js में इसी तरह की हो सकती है - मैं यह पूरा करने के लिए एक रास्ता है जो देख रहा हूँ के रूप में सरल, तेजी और सीधा संभव के रूप में।

यदि उत्तर सरल नहीं है, तो मुझे पुस्तक की सिफारिश पसंद आएगी, मुझे पढ़ने में कोई फर्क नहीं पड़ता।

मुझे घटना आधारित प्रोग्रामिंग पसंद है, मुझे वास्तव में जावास्क्रिप्ट की क्षमताओं से प्यार है और मैं वास्तव में Node.js. के बारे में उत्साहित हूं। मैं सीखना चाहता हूं कि इस तरह के सामान को शुरुआत से सही तरीके से कैसे विकसित किया जाए।

+3

मैं यह भी इंगित करना चाहूंगा कि उदाहरण के लिए mocha -> https://github.com/visionmedia/mocha का उपयोग करके अपने कोड का परीक्षण करना बहुत महत्वपूर्ण है। छोटे अच्छी तरह से परीक्षण मॉड्यूलर कोड (मॉड्यूल) बनाएँ। – Alfred

+0

आप एर्लांग पर भी एक नज़र डालें जो डिफ़ॉल्ट रूप से समवर्तीता का समर्थन करता है, node.js से तेज़ है और सी या जावा कहने से आसान है। –

उत्तर

179

बुरी खबरों के साथ शुरू करने के लिए: Node.js एक सुंदर युवा तकनीक है, मुझे लगता है कि आप पाएंगे कि एक पूर्ण वेबसाइट बनाने और इसे बनाए रखने/संचालित करने की प्रक्रियाएं जो आप वर्तमान में उपयोग की जा रही हैं उससे बहुत अलग होंगी सेवा मेरे।

Josh3736 जोड़ता है: एक बार जब आप पता लगाते हैं कि कैसे नोड.जेएस और इसके विभिन्न पैकेज (कनेक्ट, एक्सप्रेस) काम करते हैं, तो मैंने पाया कि आप बहुत जल्दी नई साइटें विकसित कर सकते हैं।

वर्तमान में नोड.जेएस में मौजूद किसी न किसी किनारे, जो इसके विकास की तेज गति के साथ संयुक्त होते हैं और इसमें शामिल सभी मॉड्यूल चीजों को जटिल बना सकते हैं, और चीजों को कम सरल, तेज और सरल बनाना चाहते हैं।

Node Package Manager, NPM, अच्छा उपकरण और चौखटे Node.js के नंगे हड्डियों कार्यक्षमता का विस्तार करने का एक बहुत कुछ है यह उपयुक्त एक वेबसर्वर बनाने के लिए कर रही है:

कि रास्ते से बाहर करने के बाद, यहाँ अच्छी खबर है।

सबसे विशेष रूप से Express Framework होगा जिसमें वेबसर्वर चलाने के लिए लगभग हर चीज शामिल है (कुकीज़, सत्र और पथ मार्ग सहित)। इसके अतिरिक्त एक्सप्रेस आंशिक समर्थन करता है, जो आपके हेडर और फ़ूटर का ख्याल रखता है।

एक्सप्रेस Sencha's Connect के शीर्ष पर बनाया गया है। कुकीज़ और सत्र वास्तव में कनेक्ट द्वारा संचालित हैं। एक्सप्रेस आपके रूटिंग को सरल बनाता है और विचार/आंशिक हैंडल करता है। इसलिए यदि आपको एक्सप्रेस के साथ आने वाली सभी घंटियाँ और सीटी की आवश्यकता नहीं है तो आप इसके बजाय कनेक्ट के लिए जा सकते हैं।

यदि आप इन आंशिक के लिए टेम्पलेट का उपयोग करना चाहते हैं, तो Jade Template Engine आपके लिए चीजों को गति दे सकता है। हालांकि Josh3736 बताता है कि जेड धीमा और सफेद जगह-महत्वपूर्ण है। एक और पूर्ण अवलोकन here पाया जा सकता है, जिसमें उसका पसंदीदा, doT शामिल है। (मैं व्यक्तिगत रूप से socket.io आधारित अनुप्रयोगों के लिए Node.js का उपयोग करता हूं, इसलिए जब यह templating की बात आती है तो वह मुझसे बेहतर स्रोत है)।

आप db-mysql मॉड्यूल का उपयोग कर Node.js से MySQL से कनेक्ट कर सकते हैं, लेकिन अगर आपको लगता है कि जरूरत नहीं है क्योंकि आप एक पहले से ही मौजूद प्रणाली से जुड़े डेटा तक पहुँच रहे हैं, मैं एक और अधिक उपयोग करने के लिए सलाह देंगे। .. 'आधुनिक' दृष्टिकोण, जो NoSQL डेटाबेस का उपयोग करना है क्योंकि अधिकांश नोड.जेएस परियोजनाएं ऐसा प्रतीत होती हैं। MongoDBMongoose के माध्यम से जाने का लोकप्रिय तरीका है।

या यदि यह केवल उन ऑब्जेक्ट्स को संग्रहीत कर रहा है, जिनमें आप रुचि रखते हैं, तो बस Redis के लिए जाएं (जिसे आपको शायद किसी भी बिंदु पर आवश्यकता होगी)।

आपकी वेबसाइट पूरी होने के बाद, आपको इसे तैनात करना होगा और यह सुनिश्चित करना होगा कि यह चल रहा है। ऐसा करने के कई तरीके हैं, जैसे अंतर्निर्मित क्लस्टर समर्थन का उपयोग करना या अधिक सुविधा-अनुकूल forever एनपीएम मॉड्यूल का उपयोग करना। See this SO question of mine for more information.

निष्कर्ष:

यह क्या मैं कम से प्राप्त करने के लिए कोशिश कर रहा हूँ है:

पूछ क्या Node.js में एक वेबसाइट के निर्माण के लिए सबसे अच्छा अभ्यास है, के बारे में पूछ रूप में ही है क्या PHP में वेबसाइट बनाने का सबसे अच्छा तरीका यह है: 100 डेवलपर आपको 100 अलग-अलग उत्तर देंगे।

एनपीएम को विभिन्न प्रकार के उत्कृष्ट ढांचे के साथ आशीर्वाद दिया जाता है जो बहुत सारे कार्यों को सरल बनाते हैं, लेकिन यह सब वरीयता पर आधारित है जो वास्तव में जाने का तरीका है।

जैसा कि मैंने कहा है, नोड.जेएस अभी भी एक सुंदर युवा तकनीक है, इसलिए फ्रेमवर्क या अतिरिक्त उपकरण अभी तक 'डिफैक्टो मानक' के रूप में उभरे हैं; अधिकांश चीजों के लिए जो आप करने की कोशिश कर रहे हैं, वहां शायद कई विकल्प हैं, और अपडेट के दौरान उनमें से अधिकतर का उपयोग करते समय आपके कोड को तोड़ने की उम्मीद है, क्योंकि नोड.जेएस के विकास और अधिकांश मॉड्यूल तेजी से विकसित होते हैं। आपको रखना होगा।

सभी को एक साथ लाना:

मैंने कहा गया है के रूप में, Node.js के लिए अपने मुख्य उत्पादन उपयोग socket.io उपयोग करने के लिए सक्षम होने के लिए, तो मैं किसी भी अच्छे उत्पादन वर्तमान उदाहरण नहीं है (और क्योंकि मैं एक अच्छी तरह से छुट्टी छुट्टी पर जाने वाला हूं, मेरे पास एक साथ रखने का समय नहीं है)।कुछ अच्छे उदाहरण हालांकि रहे हैं:

फिर, रास्ता तय (और बाद में उदाहरण का अनुसरण करने के लिए) के लिए बहुत आपका एकमात्र लक्ष्य और पर निर्भर करता है तकनीकें चुनी गईं, लेकिन सौभाग्य से उपलब्ध सभी विकल्पों के लिए बहुत सारे संसाधन उपलब्ध हैं। अधिकांश मॉड्यूल अच्छी तरह से प्रलेखित गिटहब भंडारों का उपयोग करते हैं और सबसे लोकप्रिय मॉड्यूल के साथ संयोजन में उदाहरण शामिल करते हैं (/examples/ डीआईआर देखें जो अधिकांश भंडारों में मौजूद प्रतीत होता है)।

शुभकामनाएं! (और Josh3736 को मेरी त्रुटियों को सुधारने के लिए धन्यवाद।)

+2

बहुत बहुत धन्यवाद, बस मैं क्या देख रहा था! बस एक और छोटी बात, मैं सोच रहा हूं कि शीर्षक में वर्णित कोड के समान कुछ कोड node.js में कैसे दिख सकता है? तार्किक पृथक्करण कैसे काम करेगा? मान लें कि मैं railyway.js के साथ एक्सप्रेस और जेड का उपयोग करता हूं। मैं अभी भी यह समझने के लिए संघर्ष कर रहा हूं कि मेरा कार्यक्रम कैसा दिखता है। यदि (एक साधारण) उदाहरण के लिए मेरे पास एक index.php फ़ाइल है जो डेटाबेस से मूल डेटा लोड और प्रदर्शित करती है और इसमें पाद लेख/हेडर फाइलें शामिल हैं, तो उस तरह का कोड कैसा दिखता है (बेहतर)? फिर, बहुत बहुत धन्यवाद –

+6

यह एक अच्छा जवाब है, लेकिन कुछ बिंदु: एक्सप्रेस वास्तव में कनेक्ट के शीर्ष * पर बनाया गया है। कुकीज़ और सत्र वास्तव में कनेक्ट द्वारा संचालित हैं। एक्सप्रेस आपके रूटिंग को सरल बनाता है और विचार/आंशिक हैंडल करता है। जेड * बेहद धीमी है और (व्यक्तिगत नोट पर) मुझे व्हाइटस्पेस-महत्वपूर्ण भाषाओं से नफरत है। [कुछ अन्य टेम्पलेटिंग इंजन] पर एक नज़र डालें (https://github.com/joyent/node/wiki/Modules#wiki-templating) - मेरा पसंदीदा डीओटी है, जो [तेज़] है (http: // jsperf.com/dom-vs-innerhtml-based-templating/53)। – josh3736

+4

अंततः, मैं यह नहीं कहूंगा कि नोड का उपयोग करना "सबकुछ सरल, तेज़ और सीधा है" - यह वर्तमान में आपके द्वारा उपयोग किए जाने वाले कार्यों से बहुत अलग है। एक बार जब आप पता लगाते हैं कि कैसे नोड और उसके विभिन्न पैकेज (कनेक्ट, एक्सप्रेस) काम करते हैं, तो मैंने पाया है कि आप नई साइटों * बहुत * जल्दी विकसित कर सकते हैं। हां, अभी भी मोटे किनारे हैं, लेकिन पूरी तरह से आप चीजें आसानी से और जल्दी कर सकते हैं। – josh3736