Node.js का उपयोग करके वेबसाइट बनाने की सर्वोत्तम प्रथाएँ


79

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

मुझे इस सैद्धांतिक वेबसाइट की आवश्यकता है:

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

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

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

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

<?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 -> github.com/visionmedia/mocha का उपयोग करके अपने कोड का परीक्षण करना बहुत महत्वपूर्ण है । छोटे अच्छी तरह से परीक्षण किए गए मॉड्यूलर कोड (मॉड्यूल) बनाएं।
अल्फ्रेड

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

जवाबों:


184

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

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

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

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

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

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

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

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

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

या अगर यह सिर्फ उन वस्तुओं को संग्रहीत कर रहा है जिनमें आप रुचि रखते हैं, तो इसके बजाय केवल रेडिस के लिए जाएं (जो कि आप किसी भी समय किसी भी आवश्यकता पर जा रहे हैं)।

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

निष्कर्ष :

मैं इसे पाने की कोशिश कर रहा हूं:

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

एनपीएम कई उत्कृष्ट रूपरेखाओं के साथ धन्य है जो बहुत सारे कार्यों को सरल बनाता है, लेकिन यह सब वरीयता पर आधारित है जो वास्तव में जाने का एक तरीका है।

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

यह सब एक साथ रखकर :

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

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

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


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

6
यह एक अच्छा जवाब है, लेकिन कुछ बिंदु: एक्सप्रेस वास्तव में कनेक्ट के शीर्ष पर बनाया गया है । कुकीज़ और सत्र वास्तव में कनेक्ट द्वारा संचालित होते हैं। एक्सप्रेस वह है जो आपकी रूटिंग को सरल बनाता है और विचारों / भाग-पत्रों को संभालता है। जेड बेहद धीमा है और (व्यक्तिगत नोट पर) मुझे व्हॉट्सएप-महत्वपूर्ण भाषाओं से नफरत है। कुछ अन्य टेम्प्लेटिंग इंजनों पर एक नज़र डालें - मेरा पसंदीदा डीओटी है, जो तेज है
josh3736

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

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

3
मैंने एमईएएन स्टैक (मोंगडॉब, एक्सप्रेस, कोणीय और नोड) का उपयोग करके एक पूर्ण स्टैक वेबसाइट कैसे किया जाए, इसका अंत-टू-एंड उदाहरण एक साथ रखा है। आप कोणीय या क्लाइंट को जो भी आप परिचित हैं, से बदल सकते हैं। मुझे बताया गया है कि यह वहां का सबसे अच्छा इंट्रो वीडियो है, इसलिए शायद यह दूसरों को youtube.com/watch?v=AEE7DY2AYvI
माइकल मोजर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.