जवाबों:
आपके द्वारा उल्लेखित फोल्डर के बारे में:
/libs
आमतौर पर कस्टम के लिए प्रयोग किया जाता है classes/functions/modules
/vendor
या /support
तृतीय पक्ष लाइब्रेरी शामिल है (स्रोत नियंत्रण के रूप में गिट का उपयोग करते समय गिट उप-मॉड्यूल के रूप में जोड़ा गया)/spec
बीडीडी परीक्षणों के लिए विनिर्देश शामिल हैं।/tests
एक आवेदन के लिए यूनिट-परीक्षण होता है (परीक्षण ढांचे का उपयोग करके, यहां देखें
)नोट: दोनों /vendor
और /support
अनुचित हैं के बाद से NPM एक साफ पैकेज प्रबंधन की शुरुआत की। एनपीएम और एक पैकेज.जसन फ़ाइल का उपयोग करके सभी 3-पार्टी निर्भरता को संभालने की सिफारिश की गई है
जब एक नहीं बल्कि बड़े अनुप्रयोग का निर्माण, मैं निम्नलिखित अतिरिक्त फ़ोल्डर (खासकर यदि आप की तरह MVC- / ORM-फ्रेमवर्क किसी तरह का प्रयोग कर रहे हैं की सिफारिश एक्सप्रेस या नेवला ):
/models
आपके सभी ORM मॉडल ( Schemas
मूंगोज़ में कहे गए) शामिल हैं/views
आपके व्यू-टेंपलेट्स (एक्सप्रेस में समर्थित किसी भी टेम्प्लेटिंग भाषा का उपयोग करके)/public
सभी स्थिर सामग्री (चित्र, शैली-पत्रक, क्लाइंट-साइड जावास्क्रिप्ट) शामिल हैं
/assets/images
छवि फ़ाइलें हैं/assets/pdf
स्थिर पीडीएफ फाइलें शामिल हैं/css
स्टाइल शीट शामिल हैं (या एक सीएसएस इंजन द्वारा संकलित आउटपुट)/js
क्लाइंट साइड जावास्क्रिप्ट शामिल हैं/controllers
अपने सभी एक्सप्रेस मार्गों को अपने एप्लिकेशन के मॉड्यूल / क्षेत्र द्वारा अलग करें (ध्यान दें: एक्सप्रेस के बूटस्ट्रैपिंग कार्यक्षमता का उपयोग करते समय, यह फ़ोल्डर कहा जाता है /routes
)मुझे अपनी परियोजनाओं को इस तरह व्यवस्थित करने की आदत है और मुझे लगता है कि यह बहुत अच्छी तरह से काम करता है।
CoffeeScript- आधारित एक्सप्रेस अनुप्रयोगों ( कनेक्ट-एसेट का उपयोग करके ) के लिए अपडेट करें :
/app
अपने संकलित जावास्क्रिप्ट शामिल हैं/assets/
इसमें सभी क्लाइंट-साइड एसेट शामिल हैं, जिन्हें संकलन की आवश्यकता है
/assets/js
आपकी क्लाइंट-साइड कॉफीस्क्रिप्ट फाइलें शामिल हैं/assets/css
इसमें आपकी सभी लेस / स्टाइलस शैली-शीट शामिल हैं/public/(js|css|img)
आपकी स्थिर फ़ाइलें हैं जो किसी भी संकलक द्वारा नियंत्रित नहीं की जाती हैं/src
आपके सभी सर्वर-साइड विशिष्ट कॉफीस्क्रिप्ट फ़ाइलें हैं/test
सभी इकाई परीक्षण स्क्रिप्ट शामिल हैं (अपनी पसंद के परीक्षण-ढांचे का उपयोग करके कार्यान्वित)/views
आपके सभी व्यक्त विचार शामिल हैं (यह जेड, ईजेएस या किसी अन्य अस्थायी इंजन हो)इस तरह के एक सवाल के कारण GitHub पर चर्चा चल रही है: https://gist.github.com/1398757
आप मार्गदर्शन के लिए अन्य परियोजनाओं का उपयोग कर सकते हैं, इसके लिए GitHub में खोजें:
और अंत में, एक पुस्तक में ( http://shop.oreilly.com/product/0636920025344.do ) इस संरचना का सुझाव देता है:
├── index.html
├── js/
│ ├── main.js
│ ├── models/
│ ├── views/
│ ├── collections/
│ ├── templates/
│ └── libs/
│ ├── backbone/
│ ├── underscore/
│ └── ...
├── css/
└── ...
मेरी परियोजना वास्तुकला से अधिक उदाहरण आप यहां देख सकते हैं:
├── 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
मूल रूप से, तार्किक ऐप SRC dir के अंदर DB और APP फ़ोल्डर में अलग हो गया।
src
या सामने वाले ऐप को अपना स्वयं का फ़ोल्डर (अपने package.json
और समान डेटा संरचना के साथ) प्राप्त करते हैं?
यह अप्रत्यक्ष उत्तर है, फ़ोल्डर संरचना पर ही, बहुत संबंधित है।
कुछ साल पहले मेरे पास एक ही सवाल था, एक फ़ोल्डर संरचना ली, लेकिन बाद में चलते हुए एक बहुत निर्देशिका करना था, क्योंकि फ़ोल्डर एक अलग उद्देश्य के लिए था, जो मैंने इंटरनेट पर पढ़ा है, अर्थात्, एक विशेष फ़ोल्डर में क्या है कुछ फ़ोल्डरों पर अलग-अलग लोगों के लिए अलग-अलग अर्थ।
अब, कई प्रोजेक्ट्स किए जा रहे हैं, अन्य सभी उत्तरों में स्पष्टीकरण के अलावा, फ़ोल्डर संरचना पर ही, मैं दृढ़ता से स्वयं Node.js की संरचना का पालन करने का सुझाव दूंगा, जिसे यहां देखा जा सकता है: https://github.com/ नोडज / नोड । यह सभी पर महान विवरण है, लिंटर और अन्य, क्या फ़ाइल और फ़ोल्डर संरचना उनके पास है और कहां है। कुछ फ़ोल्डर्स में एक README होता है जो बताता है कि उस फ़ोल्डर में क्या है।
उपर्युक्त संरचना में शुरू करना अच्छा है क्योंकि किसी दिन एक नई आवश्यकता आती है, लेकिन आपके पास सुधार करने की गुंजाइश होगी क्योंकि यह पहले से ही Node.js द्वारा पीछा किया जाता है जो अब कई वर्षों से बनाए रखा गया है।
उम्मीद है की यह मदद करेगा।
यह ध्यान रखना महत्वपूर्ण है कि सबसे अच्छा दृष्टिकोण और सामान्य रूप से संबंधित रूपरेखाओं पर कोई आम सहमति नहीं है और न ही कुछ संरचनाओं को पुरस्कृत करते हैं।
मैं इसे एक निराशा और भारी उपरि होने के लिए समान रूप से महत्वपूर्ण मानता हूं। यह शैली गाइड के मुद्दे के एक डाउनप्लेड संस्करण (लेकिन IMO अधिक महत्वपूर्ण) की तरह है । मुझे यह इंगित करना पसंद है क्योंकि इसका उत्तर समान है: इससे कोई फर्क नहीं पड़ता कि आप किस संरचना का उपयोग करते हैं जब तक कि यह अच्छी तरह से परिभाषित और सुसंगत न हो ।
इसलिए मैं एक व्यापक मार्गदर्शिका की तलाश करना चाहता हूं जो आपको पसंद हो और यह स्पष्ट करे कि परियोजना इस पर आधारित है।
यह आसान नहीं है, खासकर यदि आप इसके लिए नए हैं! घंटों शोध करने की उम्मीद है। आपको MVC जैसी संरचना की अनुशंसा करने वाले अधिकांश मार्गदर्शक मिलेंगे। जबकि कई साल पहले जो एक ठोस विकल्प हो सकता था, आजकल वह जरूरी नहीं है। उदाहरण के लिए यहां एक और दृष्टिकोण है ।
हम वेब अनुप्रयोगों और एपीआई के निर्माण के बारे में बात कर रहे हैं:
एक तरीका है फाइलों को फीचर द्वारा वर्गीकृत करना , बहुत कुछ ऐसा जैसा माइक्रो सर्विस आर्किटेक्चर जैसा दिखता है। मेरी राय में सबसे बड़ी जीत यह है कि यह देखना आसान है कि कौन सी फाइलें एप्लिकेशन की एक विशेषता से संबंधित हैं।
उदाहरण के माध्यम से वर्णन करने का सबसे अच्छा तरीका है:
हम एक पुस्तकालय अनुप्रयोग विकसित कर रहे हैं। अनुप्रयोग के पहले संस्करण में, एक उपयोगकर्ता कर सकता है:
दूसरे संस्करण में, उपयोगकर्ता यह भी कर सकते हैं:
एक तीसरे संस्करण में, उपयोगकर्ता भी कर सकते हैं:
पहले हमारे पास निम्नलिखित संरचना है:
books
├─ controllers
│ ├─ booksController.js
│ └─ authorsController.js
│
└─ entities
├─ book.js
└─ author.js
हम फिर उपयोगकर्ता और ऋण सुविधाओं पर जोड़ते हैं:
user
├─ controllers
│ └─ userController.js
├─ entities
│ └─ user.js
└─ middleware
└─ authentication.js
loan
├─ controllers
│ └─ loanController.js
└─ entities
└─ loan.js
और फिर पसंदीदा कार्यक्षमता:
favorites
├─ controllers
│ └─ favoritesController.js
└─ entities
└─ favorite.js
किसी भी नए डेवलपर के लिए जो इस बात को जोड़ने का काम सौंपता है कि किताबों की खोज की जानकारी भी वापस आनी चाहिए, यदि कोई पुस्तक पसंदीदा के रूप में चिह्नित की गई है, तो यह देखना आसान है कि कोड में उसे कहाँ दिखना चाहिए।
फिर जब उत्पाद स्वामी स्वीप करता है और दावा करता है कि पसंदीदा सुविधा को पूरी तरह से हटा दिया जाना चाहिए, तो इसे निकालना आसान है।