के साथ बिल्ड, सर्वर, क्लाइंट और साझा जावास्क्रिप्ट कोड को व्यवस्थित करने के लिए कैसे करें सर्वर पर नोडजेएस का उपयोग करने के साथ मुझे हमेशा एक बड़ा लाभ सर्वर और क्लाइंट साइड के बीच कोड के बिट्स साझा करने की क्षमता है (उदा। इनपुट सत्यापन)। अब जब मैं वास्तव में नोडजेएस का उपयोग कर विकास कर रहा हूं, मुझे मिली एक कठिनाई वह जिम्मेदारी और संदर्भ निर्धारित कर रही है जिसमें कोड के प्रत्येक निकाय को निष्पादित किया जाता है। नीचे मैं उन कुछ कठिनाइयों को सूचीबद्ध करूंगा जो उम्मीद में हैं, उन सम्मेलनों या मार्गदर्शन पर कुछ ज्ञान प्राप्त करें जो मुझे अनदेखा कर सकते हैं जो इन मुद्दों को बढ़ाने में मदद कर सकते हैं।नोडजेएस
बिल्ड समय कोड
बिल्ड समय परियोजनाओं है कि एक तरीका है कि बुनियादी दस्तावेज़ का पालन में Gulp, ग्रंट, या वेनिला NPM का उपयोग के लिए कोड आम तौर पर बहुत आसान का पालन कर रहे हैं। अधिकांश छोटी परियोजनाएं एक ही फाइल के भीतर सभी कोड को रखने के लिए होती हैं और फ़ाइल को पारंपरिक नाम जैसे gulpfile.js नाम दिया जाता है, हालांकि बड़ी परियोजनाओं के साथ मैंने देखा है कि इन स्क्रिप्ट को विभाजित करना शुरू हो गया है। मैंने कुछ मामलों को देखा है जहां गल्प फ़ाइल को कई फाइलों में विभाजित किया गया है और एक अलग निर्देशिका के तहत रखा गया है। इससे भी बदतर मुझे ऐसे मामले मिल गए हैं जहां gulpfile.js फ़ाइल को ऐसे नए डेवलपर्स के रूप में नामित नहीं किया गया है, जहां यह पता लगाने के लिए कि गुलफाइल कहाँ स्थित है और एक बार यह स्थित है, तो गल्प कमांड को हमेशा विशिष्ट के साथ चलाना होगा --gulpfile विकल्प।
भागो समय सर्वर-साइड कोड
बुनियादी नोड अनुप्रयोगों के लिए प्रवेश बिंदु केवल किसी विशिष्ट JavaScript फ़ाइल उनका कहना है जब नोड आदेश चलाकर की आवश्यकता होती है करने के लिए प्रकट (उदा। node script.js
)। वेब सर्वर अनुप्रयोगों के लिए, जैसे कि Express का उपयोग करने वाले, मैंने देखा है कि सम्मेलन द्वारा प्रविष्टि बिंदु फ़ाइल को अक्सर server.js कहा जाता है और आमतौर पर एप्लिकेशन की मूल निर्देशिका में पाया जा सकता है। कुछ अन्य मामलों में हालांकि जैसे डेवलपर पर्यावरण में वेब सर्वर चलाते समय मैंने गल्प कार्यों को नोड लॉन्च करने की ज़िम्मेदारी पर देखा है। इन मामलों में प्रवेश बिंदु को शामिल करने के कई तरीके हैं लेकिन मुझे मिला एक उदाहरण वेबपैक अनुपालन शुरू कर रहा है जिसके बाद को प्रविष्टि बिंदु स्क्रिप्ट के लिए कथन की आवश्यकता है। एक विशिष्ट node debug कमांड को पूरा करने के तरीके पर सामान्य मार्गदर्शन को कैसे शामिल किया जाए, इस प्रकार के सेटअप में गैर-तुच्छ है। आवेदन के प्रवेश बिंदु के अलावा, नोडजेएस/एक्सप्रेस अनुप्रयोगों के लिए निर्देशिका संरचना पर कोई सामान्य मार्गदर्शन प्रतीत नहीं होता है जो इसे ढूंढने में सहायता के लिए सर्वर-साइड विशिष्ट कोड को रखता है और इसे बिल्ड-टाइम से अलग रखने के लिए करता है और क्लाइंट-साइड कोड।
सर्वर-साइड स्टोरी उन मामलों में और भी जटिल हो जाती है जहां सर्वर साइड कोड का उपयोग स्थिर सामग्री, सर्वर-साइड जेनरेटेड व्यू (जैसे एमवीसी के साथ) के साथ-साथ एक प्रदान करने के उद्देश्य से किया जाता है। ग्राहक पक्ष के लिए एपीआई। मेरी प्राथमिकता एपीआई को एप्लिकेशन प्रोजेक्ट से अलग करना है, लेकिन मुझे दूसरों से यह महसूस हो रहा है कि ऐसा करने में अतिसंवेदनशीलता की भावना है, जहां मैं इसे चिंताओं के उचित पृथक्करण के रूप में देखता हूं।
भागो समय क्लाइंट-साइड कोड
के बाद से क्लाइंट-साइड कोड अक्सर पहले पृष्ठ कि अनुरोध किया जाता है यह मुश्किल हो सकता है के आधार पर विभिन्न प्रवेश द्वारों हो सकता है। हालांकि यूआरएल की सामान्य पारदर्शिता के कारण वे सामान्य मामलों के लिए संसाधनों को कैसे मैप करते हैं, साथ ही साथ आधुनिक ब्राउज़र में डिबगिंग टूल कितने शक्तिशाली होते हैं, इसलिए स्क्रिप्ट के अनुसरण के बाद यह बहुत अधिक परेशानी नहीं होती है। क्लाइंट साइड कोड के बजाय मुश्किल सामान्य प्रक्रियाओं के लिए अधिक आता है जो आमतौर पर फ़ाइलों को प्रतिलिपि बनाते हैं और उन्हें एक अलग नाम के तहत संरचना जैसे उत्पादन में डाल देते हैं।एक उदाहरण एक प्रोजेक्ट होगा जिसमें src या जेएस नामक एक फ़ोल्डर होगा जिसमें क्लाइंट-साइड और सर्वर-साइड कोड इंटरमल्ड किया गया है, सिवाय इसके कि फाइलों का केवल एक हिस्सा एक बिल्ड कार्य में शामिल किया जाना चाहिए जो अक्सर बदलता है और अक्सर फ़ाइलों को जोड़ता है और उन्हें वितरण फ़ोल्डर में रखता है। कि मैंने देखा है इन वितरण फ़ोल्डरों की सामान्य नाम जिले, सार्वजनिक, www, और wwwroot हैं। अक्सर यदि ये निर्देशिका हमेशा परियोजना की जड़ पर नहीं होती है जो कम से कम निर्माण स्क्रिप्ट पूछताछ किए बिना इसे ढूंढना थोड़ा आसान बनाती है।
मेरे उम्मीद नहीं है वहाँ कैसे एक आधिकारिक स्रोत से शायद एक साथ एक समझदार रास्ते में यह सब डाल करने के लिए मुख्य रूप से अपने आप की तरह जो लोग सही तरीके से शुरू कर सकते हैं करने के लिए मार्गदर्शन देने के लिए पर कुछ सामान्य मार्गदर्शन है कि वह यह है कि । एक साइड इफेक्ट के रूप में शायद कुछ प्रकार के मानक को संदर्भित करने में सक्षम होने के बावजूद यदि यह एक ढीला है, तो बॉयलरप्लेट की मात्रा को भी कम कर सकता है, जिसकी टीम को आविष्कार करना पड़ता है और चर्चा शुरू होती है। ऊपर सूचीबद्ध प्रत्येक संदर्भ में स्पष्ट रूप से कुछ तकनीकी विशिष्ट सम्मेलन होंगे जैसे कि क्लाइंट-साइड पर एंगुलरजेएस, उल्का, या रीएक्टजेएस के लिए पीछा किया गया। जिन सम्मेलनों को मैं ढूंढ रहा हूं वे अंततः अंत जावास्क्रिप्ट अनुप्रयोगों में मुख्य हाईलेवल संदर्भों को अलग करने के लिए अधिक विशिष्ट हैं, जहां भाषा और प्लेटफॉर्म अब प्रत्येक के बीच अंतर करने के लिए स्पष्ट तरीका नहीं बनता है।
शायद आधिकारिक से दूर, मैंने इस जिथब परियोजना में ठोकर खाई है जो बड़े नोडजेएस ऐप्स के लिए संभावित लेआउट पर चर्चा करता है। https://gist.github.com/lancejpollard/1398757 – jpierson