node.js एक नोड.जेएस परियोजना के लिए फ़ोल्डर संरचना




(5)

मेरे प्रोजेक्ट आर्किटेक्चर से अधिक उदाहरण आप यहां देख सकते हैं:

├── Dockerfile
├── README.md
├── config
│   └── production.json
├── package.json
├── schema
│   ├── create-db.sh
│   ├── db.sql
├── scripts
│   └── deploy-production.sh 
├── src
│   ├── app -> Containes API routes
│   ├── db -> DB Models (ORM)
│   └── server.js -> the Server initlializer.
└── test

असल में, लॉजिकल ऐप एसआरसी डीआईआर के अंदर डीबी और एपीपी फ़ोल्डर्स से अलग हो गया।

मैंने देखा है कि नोड.जेएस परियोजनाओं में अक्सर इन जैसे फ़ोल्डर शामिल होते हैं:

/ libs, / विक्रेता, / समर्थन, / spec, / परीक्षण

इनका मतलब क्या है? उनके बीच क्या अंतर है, और मुझे संदर्भित कोड कहां शामिल करना चाहिए?


यह ध्यान रखना महत्वपूर्ण है कि सामान्य रूप से सर्वोत्तम दृष्टिकोण और संबंधित ढांचे के बारे में कोई सहमति नहीं है कि कुछ संरचनाओं को लागू न करें और न ही पुरस्कृत करें।

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

तो मैं आपको एक व्यापक मार्गदर्शिका की तलाश करने का प्रस्ताव दूंगा जो आपको पसंद है और यह स्पष्ट करता है कि परियोजना इस पर आधारित है।

यह आसान नहीं है, खासकर अगर आप इसके लिए नए हैं! घंटे शोध करने की उम्मीद है। आपको एमवीसी जैसी संरचना की सिफारिश करने वाले अधिकांश गाइड मिलेंगे। हालांकि कई साल पहले यह एक ठोस विकल्प हो सकता था, आजकल यह आवश्यक नहीं है। उदाहरण के लिए यहां एक और दृष्टिकोण है


यह अप्रत्यक्ष उत्तर है, फ़ोल्डर संरचना पर, बहुत संबंधित है।

कुछ साल पहले मेरे पास एक ही सवाल था, एक फ़ोल्डर संरचना ले ली लेकिन उसे बाद में चलने वाली बहुत सी निर्देशिका करना पड़ा, क्योंकि फ़ोल्डर इंटरनेट पर पढ़ने के मुकाबले एक अलग उद्देश्य के लिए था, यानी, एक विशेष फ़ोल्डर में क्या है कुछ फ़ोल्डरों पर विभिन्न लोगों के लिए अलग-अलग अर्थ।

अब, कई अन्य परियोजनाओं को करने के अलावा, अन्य सभी उत्तरों में स्पष्टीकरण के अलावा, फ़ोल्डर संरचना पर, मैं दृढ़ता से सुझाव देता हूं कि नोड.जेएस की संरचना का पालन करें, जिसे यहां देखा जा सकता है: https://github.com/nodejs/node । लिंटर्स और दूसरों का कहना है कि उनके पास बहुत अच्छी जानकारी है, उनके पास कौन सी फ़ाइल और फ़ोल्डर संरचना है और कहां है। कुछ फ़ोल्डरों में एक रीडमी है जो बताती है कि उस फ़ोल्डर में क्या है।

उपरोक्त संरचना में शुरू करना अच्छा है क्योंकि कुछ दिन एक नई आवश्यकता आती है और आपके पास सुधार करने का दायरा होगा क्योंकि यह पहले से ही नोड.जेएस स्वयं ही है जो कई वर्षों से बनाए रखा जाता है।

उम्मीद है की यह मदद करेगा।


आपके द्वारा उल्लिखित फ़ोल्डरों के बारे में:

  • / libs आमतौर पर कस्टम कक्षाओं / कार्यों / मॉड्यूल के लिए प्रयोग किया जाता है
  • / विक्रेता या / समर्थन में तृतीय पक्ष पुस्तकालय शामिल हैं (गिट उप-मॉड्यूल के रूप में जोड़ा गया है जब गिट का उपयोग स्रोत नियंत्रण के रूप में किया जाता है)
  • / spec में बीडीडी परीक्षण के लिए विनिर्देश शामिल हैं।
  • / परीक्षणों में एक अनुप्रयोग के लिए इकाई परीक्षण शामिल हैं (एक परीक्षण ढांचे का उपयोग करके, here देखें)

नोट: एनपीएम ने एक स्वच्छ पैकेज प्रबंधन शुरू करने के बाद दोनों / विक्रेता और / समर्थन को बहिष्कृत कर दिया है। एनपीएम और एक पैकेज.जेसन फ़ाइल का उपयोग कर सभी तृतीय पक्ष निर्भरताओं को संभालने की अनुशंसा की जाती है

एक बड़े आवेदन के निर्माण के दौरान, मैं निम्नलिखित अतिरिक्त फ़ोल्डरों की अनुशंसा करता हूं (विशेष रूप से यदि आप किसी प्रकार का एमवीसी- / ओआरएम-फ्रेमवर्क जैसे express या mongoose का उपयोग कर रहे हैं):

  • / मॉडल में आपके सभी ओआरएम मॉडल शामिल हैं (जिसे Schemas में Schemas कहा जाता है)
  • / विचारों में आपके व्यू-टेम्पलेट्स शामिल हैं (एक्सप्रेस में समर्थित किसी भी templating भाषा का उपयोग कर)
  • / सार्वजनिक में सभी स्थिर सामग्री (छवियां, स्टाइल-शीट्स, क्लाइंट-साइड जावास्क्रिप्ट) शामिल हैं
    • / संपत्ति / छवियों में छवि फाइलें हैं
    • / संपत्ति / पीडीएफ स्थिर पीडीएफ फाइलें हैं
    • / सीएसएस में स्टाइल शीट्स (या एक सीएसएस इंजन द्वारा संकलित आउटपुट) शामिल है
    • / जेएस क्लाइंट साइड जावास्क्रिप्ट है
  • / नियंत्रकों में आपके सभी एक्सप्रेस मार्ग होते हैं, जो आपके अनुप्रयोग के मॉड्यूल / क्षेत्र से अलग होते हैं (नोट: एक्सप्रेस की बूटस्ट्रैपिंग कार्यक्षमता का उपयोग करते समय, इस फ़ोल्डर को / मार्ग कहा जाता है)

मैंने अपनी परियोजनाओं को इस तरह व्यवस्थित करने के लिए उपयोग किया और मुझे लगता है कि यह बहुत अच्छी तरह से काम करता है।

कॉफीस्क्रिप्ट-आधारित एक्सप्रेस अनुप्रयोगों के लिए अद्यतन ( connect-assets का उपयोग करके):

  • / ऐप में आपकी संकलित जावास्क्रिप्ट है
  • / संपत्ति / सभी क्लाइंट-साइड संपत्तियां होती हैं जिन्हें संकलन की आवश्यकता होती है
    • / परिसंपत्तियों / जेएस में आपके क्लाइंट-साइड कॉफीस्क्रिप्ट फाइलें हैं
    • / संपत्ति / सीएसएस में आपकी सभी कम / स्टाइलस शैली-चादरें शामिल हैं
  • / public / (js | css | img) में आपकी स्थैतिक फ़ाइलें शामिल हैं जिन्हें किसी भी कंपाइलर द्वारा नियंत्रित नहीं किया जाता है
  • / src में आपके सभी सर्वर-साइड विशिष्ट कॉफीस्क्रिप्ट फ़ाइलें शामिल हैं
  • / परीक्षण में सभी इकाई परीक्षण स्क्रिप्ट शामिल हैं (आपकी पसंद के परीक्षण-ढांचे का उपयोग करके कार्यान्वित)
  • / विचारों में आपके सभी व्यक्त विचार होते हैं (चाहे वह जेड, ईजेएस या कोई अन्य टेम्पलेटिंग इंजन हो)

1) प्रशासक मोड में ओपन सीएमडी।

2) कमांड चलाएं - npm install express-generator -g । यह आपके सिस्टम में वैश्विक स्तर पर पैकेज स्थापित करेगा और आपको इसे फिर से स्थापित करने की आवश्यकता नहीं होगी।

3) अब एक फ़ोल्डर बनाएं जिसमें आपको अपना एप्लिकेशन बनाना होगा। अब नीचे दिए गए चरणों का पालन करें: व्यवस्थापक मोड में सीएमडी खोलें।

4) कमांड express TestApp । यहां TestApp एप्लिकेशन का नाम है। यह फ़ोल्डर संरचना बना देगा।

5) अब कमांड npm install चलाएं। यह सभी आवश्यक निर्भरताओं को स्थापित करेगा। इसके लिए व्यवस्थापक मोड की आवश्यकता है अन्यथा इसे स्थापित करने के लिए यह आपको एक त्रुटि देगा।

6) अब कमांड एनपीएम शुरू करें। यह एप्लिकेशन शुरू करेगा। अब आप यूआरएल पर जा सकते हैं: http://localhost:3000/ आउटपुट देखने के लिए।





node.js