উত্তর:
আপনি উল্লিখিত ফোল্ডারগুলি সম্পর্কে:
/libs সাধারণত কাস্টম জন্য ব্যবহৃত হয় classes/functions/modules/vendorবা /support3 য় পক্ষের গ্রন্থাগার রয়েছে (গিটারটি সোর্স নিয়ন্ত্রণ হিসাবে ব্যবহার করার সময় গিট সাব-মডিউল হিসাবে যুক্ত করা হয়েছে)/spec বিডিডি পরীক্ষার জন্য নির্দিষ্টকরণ রয়েছে।/testsএকটি অ্যাপ্লিকেশনটির জন্য ইউনিট-পরীক্ষা রয়েছে (একটি পরীক্ষার কাঠামো ব্যবহার করে,
এখানে দেখুন )উল্লেখ্য: উভয় /vendorএবং /supportঅবচিত যেহেতু NPM একটি পরিষ্কার প্যাকেজ পরিচালনার পরিচয় করিয়ে দেন। এটি এনপিএম এবং একটি প্যাকেজ.জসন ফাইল ব্যবহার করে সমস্ত তৃতীয় পক্ষের নির্ভরতা হ্যান্ডেল করার পরামর্শ দেওয়া হয়
যখন একটি বরং বড় আবেদন বিল্ডিং, আমি নিম্নলিখিত অতিরিক্ত ফোল্ডার (বিশেষ করে যদি আপনি চান MVC- / ORM-ফ্রেমওয়ার্ক কিছু ব্যবহার করছেন সুপারিশ দ্রুতগামী বা নকুল ):
/modelsআপনার সমস্ত ওআরএম মডেল রয়েছে ( Schemasমঙ্গুজে বলা হয়)/views আপনার ভিউ-টেম্পলেটগুলি (এক্সপ্রেসে সমর্থিত কোনও টেম্প্লেটিং ভাষা ব্যবহার করে) রয়েছে/public সমস্ত স্থিতিশীল সামগ্রী (চিত্রগুলি, স্টাইল শিটস, ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট) রয়েছে
/assets/images ইমেজ ফাইল রয়েছে/assets/pdf স্ট্যাটিক পিডিএফ ফাইল রয়েছে/css স্টাইল শীট (বা একটি সিএসএস ইঞ্জিন দ্বারা সংকলিত আউটপুট) রয়েছে/js ক্লায়েন্ট পাশ জাভাস্ক্রিপ্ট রয়েছে/controllersআপনার অ্যাপ্লিকেশনটির মডিউল / ক্ষেত্র দ্বারা পৃথক করা আপনার সমস্ত এক্সপ্রেস রুট ধারণ করুন (দ্রষ্টব্য: এক্সপ্রেসের বুটস্ট্র্যাপিং কার্যকারিতাটি ব্যবহার করার সময়, এই ফোল্ডারটি বলা হয় /routes)আমি এইভাবে আমার প্রকল্পগুলি সংগঠিত করতে অভ্যস্ত হয়েছি এবং আমার মনে হয় এটি বেশ কার্যকর হয়েছে works
কফিস্ক্রিপ্ট-ভিত্তিক এক্সপ্রেস অ্যাপ্লিকেশনগুলির জন্য আপডেট করুন ( সংযোগ-সম্পদ ব্যবহার করে ):
/app আপনার সংকলিত জাভাস্ক্রিপ্ট রয়েছে/assets/ সমস্ত ক্লায়েন্ট-পাশের সম্পদ রয়েছে যা সংকলন প্রয়োজন
/assets/js আপনার ক্লায়েন্ট-সাইড কফিস্ক্রিপ্ট ফাইল রয়েছে/assets/css আপনার সমস্ত কম / স্টাইলাস স্টাইল শিট রয়েছে/public/(js|css|img) আপনার স্থির ফাইল রয়েছে যা কোনও সংকলক দ্বারা পরিচালিত হয় না/src আপনার সমস্ত সার্ভার-সাইড নির্দিষ্ট কফিস্ক্রিপ্ট ফাইল রয়েছে/test সমস্ত ইউনিট টেস্টিং স্ক্রিপ্ট রয়েছে (আপনার পছন্দের পরীক্ষার কাঠামো ব্যবহার করে প্রয়োগ করা হয়েছে)/views আপনার সমস্ত এক্সপ্রেস ভিউ রয়েছে (এটি জেড, ইজেস বা অন্য কোনও টেম্প্লেটিং ইঞ্জিন)এটির অনুরূপ একটি প্রশ্নের কারণে গিটহাবের উপর আলোচনা রয়েছে: https://gist.github.com/1398757
আপনি গাইডেন্সের জন্য অন্যান্য প্রকল্পগুলি ব্যবহার করতে পারেন, গিটহাবের জন্য অনুসন্ধান করতে পারেন:
এবং পরিশেষে, একটি বইতে ( 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বা সম্মুখ সমাপ্তি অ্যাপটি নিজস্ব ফোল্ডারটি (তার নিজস্ব package.jsonএবং অনুরূপ ফোল্ডার কাঠামো সহ) পাবে?
এটি ফোল্ডারের কাঠামোর মধ্যেই পরোক্ষ উত্তর very
কয়েক বছর আগে আমার একই প্রশ্ন ছিল, একটি ফোল্ডার কাঠামো নিয়েছিল তবে অনেকগুলি ডিরেক্টরি পরে চালিয়ে যেতে হয়েছিল, কারণ ফোল্ডারটি আমি ইন্টারনেটে পড়েছি তার চেয়ে আলাদা উদ্দেশ্যে তৈরি করা হয়েছিল, এটি একটি নির্দিষ্ট ফোল্ডার যা করে কিছু ফোল্ডারে বিভিন্ন লোকের জন্য আলাদা অর্থ।
এখন, ফোল্ডার কাঠামো নিজেই, অন্যান্য সমস্ত উত্তরের ব্যাখ্যা ছাড়াও, একাধিক প্রকল্পগুলি সম্পাদন করার পরে, আমি দৃ strongly়ভাবে নোড.জেএস এর কাঠামো অনুসরণ করার পরামর্শ দেব, যা এখানে দেখা যাবে: https://github.com/ nodejs / নোড । এটি সবার উপরে দুর্দান্ত তথ্য রয়েছে, বলুন এবং অন্যান্যগুলি বলুন, তাদের কোন ফাইল এবং ফোল্ডার কাঠামো রয়েছে এবং কোথায় রয়েছে। কিছু ফোল্ডারে একটি README থাকে যা সেই ফোল্ডারে কী রয়েছে তা ব্যাখ্যা করে।
উপরের কাঠামোতে শুরু করা ভাল কারণ কোনও দিন একটি নতুন প্রয়োজনীয়তা আসে এবং আপনার ইতিমধ্যে নোড.জেএস অনুসরণ করে যা উন্নতি করার সুযোগ পাবে যা এখন বেশ কয়েক বছর ধরে রক্ষণাবেক্ষণ করা হচ্ছে।
আশাকরি এটা সাহায্য করবে.
এটি লক্ষ করা গুরুত্বপূর্ণ যে সাধারণভাবে সর্বোত্তম পদ্ধতির এবং সম্পর্কিত কাঠামোগুলি নির্দিষ্ট কাঠামো প্রয়োগ করে না বা পুরষ্কার দেয় না সে সম্পর্কে কোনও conক্যমত্য নেই।
আমি এটিকে হতাশাব্যঞ্জক এবং বিশাল ওভারহেড বলে মনে করি তবে সমানভাবে গুরুত্বপূর্ণ। এটি একটি একে গুরুত্বহীন সংস্করণ (কিন্তু আইএমও বেশি গুরুত্বপূর্ণ) সাজানোর শৈলী গাইড ইস্যু । আমি এটি উল্লেখ করতে চাই কারণ উত্তরটি একই: আপনি যতক্ষণ কাঠামো এটির সংজ্ঞাযুক্ত এবং সুসংগত হিসাবে ব্যবহার করেন তা বিবেচ্য নয় ।
সুতরাং আমি আপনাকে পছন্দ করি এমন একটি বিস্তৃত গাইড সন্ধান করার প্রস্তাব দেব এবং এটি পরিষ্কার করে দেব যে প্রকল্পটি এর ভিত্তিতে রয়েছে।
এটি সহজ নয়, বিশেষত আপনি যদি এটিতে নতুন হন! ঘন্টা গবেষণা ব্যয় আশা। আপনি বেশিরভাগ গাইডকে এমভিসির মতো কাঠামোর প্রস্তাব দিচ্ছেন। বেশ কয়েক বছর আগে যদিও এটি একটি কঠিন পছন্দ হতে পারে, আজকাল এটি অবশ্যই প্রয়োজন হয় না। উদাহরণস্বরূপ এখানে অন্য পদ্ধতি ।
ধরে নিই আমরা ওয়েব অ্যাপ্লিকেশন এবং বিল্ডিং এপিআই সম্পর্কে কথা বলছি:
একটি পন্থাটি হ'ল মাইক্রো সার্ভিস আর্কিটেকচারের মতো দেখতে, বৈশিষ্ট্য অনুসারে ফাইলগুলি শ্রেণীবদ্ধ করা । আমার মতে সর্বাধিক বিজয় হ'ল অ্যাপ্লিকেশনটির কোনও বৈশিষ্ট্য সম্পর্কিত কোন ফাইলগুলি এটি দেখতে খুব সহজ।
চিত্রিত করার সর্বোত্তম উপায় হ'ল একটি উদাহরণের মাধ্যমে:
আমরা একটি লাইব্রেরি অ্যাপ্লিকেশন বিকাশ করছি। অ্যাপ্লিকেশনটির প্রথম সংস্করণে, একজন ব্যবহারকারী এটি করতে পারেন:
দ্বিতীয় সংস্করণে, ব্যবহারকারীরাও এটি করতে পারেন:
তৃতীয় সংস্করণে, ব্যবহারকারীরাও এটি করতে পারেন:
প্রথমে আমাদের নীচের কাঠামো রয়েছে:
books
├─ controllers
│ ├─ booksController.js
│ └─ authorsController.js
│
└─ entities
├─ book.js
└─ author.js
তারপরে আমরা ব্যবহারকারীর এবং loanণের বৈশিষ্ট্যগুলি যুক্ত করব:
user
├─ controllers
│ └─ userController.js
├─ entities
│ └─ user.js
└─ middleware
└─ authentication.js
loan
├─ controllers
│ └─ loanController.js
└─ entities
└─ loan.js
এবং তারপরে পছন্দের কার্যকারিতা:
favorites
├─ controllers
│ └─ favoritesController.js
└─ entities
└─ favorite.js
যে কোনও নতুন বিকাশকারীর পক্ষে এই কাজটি যুক্ত করে দেওয়া হয়েছে যে বইয়ের অনুসন্ধানে কোনও তথ্য পছন্দসই হিসাবে চিহ্নিত করা হয়েছে এমন তথ্যও ফিরিয়ে দেওয়া উচিত, কোডটি কোথায় তার দেখতে হবে তা দেখতে খুব সহজ।
তারপরে যখন পণ্যটির মালিক ঝাঁপিয়ে পড়ে এবং বিবরণ দেয় যে পছন্দগুলি বৈশিষ্ট্যটি পুরোপুরি সরানো উচিত, তখন এটি মুছে ফেলা সহজ।