2015-04-29 11 views
12

मेरी टीम वर्तमान में फेसबुक के फ्लक्स आर्किटेक्चर का उपयोग कर ReactJS में लिखे गए बड़े एप्लिकेशन पर काम कर रही है। यह अभी भी अपने बचपन में अभी भी है लेकिन यह बहुत जल्द बढ़ने जा रहा है। इसमें 50 से अधिक छोटे घटक दृश्य होंगे, बहुत सारे कार्य, स्टोर और कार्य-निर्माता होंगे।ReactJS फ्लक्स एप्लिकेशन निर्देशिका संरचना

वर्तमान में, हमारी निर्देशिका संरचना लगता है कि -

App 
|___ module_1 
| |___ components 
| | |___ component1.react.js 
| | |___ component2.react.js 
| |___ module1ActionCreators.js 
| |___ module1Constants.js 
| |___ module1store.js 
| 
|___ module_2 
    |___ ... (same structure as above) 

इस दृष्टिकोण के साथ समस्याओं में से एक यह है कि module_x फ़ोल्डर के रूप में इस अनुप्रयोग बढ़ता संख्या में बड़ी तेजी से हो जाएगा।

क्या किसी के पास यह साझा करने के लिए कुछ भी है कि उन्होंने अपने ऐप को कैसे संरचित किया? हमारे अनुभव में, फेसबुक के उदाहरण ऐप्स (टोडो और चैट) में छोटे ऐप्स के लिए एक आर्किटेक्चर उपयुक्त है, लेकिन एक बार उन स्टोर्स, घटकों और कार्यों में संख्या बढ़ने के बाद, प्रबंधन करना कठिन हो जाता है।

अग्रिम धन्यवाद।

+0

यदि कोई घटक पर्याप्त सामान्य और पुन: प्रयोज्य पर्याप्त है, तो इसे अपने स्वयं के एनपीएम मॉड्यूल में विभाजित करें। यदि आप उदार हैं, इसे खोलें और इसे http://react-components.com/ –

+4

पर सूचीबद्ध करें, मुझे लगता है कि यह बड़े ऐप्स के लिए जाने का तरीका है। लेकिन आपके मॉड्यूल बहुत छोटे हो सकते हैं। मेरा ऐप वर्तमान में प्रकार के अनुसार आदेश दिया गया है, जैसा कि @ fisherwebdev के उत्तर और प्रत्येक एकल प्रवाह उदाहरण में दिखाया गया है, लेकिन मेरा मानना ​​है कि यह वास्तव में अच्छी तरह से स्केल नहीं करता है। स्टोर स्टोर में मेरे पास पहले से 25 स्टोर हैं। मैं 'ऑर्डर बाय टाइप' के बजाय 'फीचर द्वारा ऑर्डर' करने की योजना बना रहा हूं, इनमें से प्रत्येक फीचर वास्तव में एक छोटा 'ऐप' होगा, जो 'कोर' एप में प्लग करेगा। इनमें से प्रत्येक केवल 'कोर' मॉड्यूल पर निर्भर होना चाहिए। हालांकि यह सिर्फ एक विचार है। अभी तक डिजाइन नहीं किया गया है। – RoryKoehein

+0

@RoryKoehein क्या आपने अभी तक कुछ करने का प्रयास किया है? मुझे लगता है कि हालांकि यह सही दृष्टिकोण है।इस तरह हमने इसे किया है, सिवाय इसके कि हम फिर भी एक फीचर के अंदर टाइप करके ऑर्डर करते हैं, जिससे वहां केवल कुछ फाइलों के साथ अतिरिक्त फ़ोल्डर्स का भारी भार होता है। – froginvasion

उत्तर

18

सामान्य निर्देशिका संरचना अधिक इस तरह है:

 
js 
├── AppBootstrap.js 
├── AppConstants.js 
├── AppDispatcher.js 
├── actions 
│ ├── AppActions.js 
│ ├── FriendActions.js 
│   └── PhotoActions.js 
├── components 
│ ├── AppRoot.react.js 
│ ├── friends 
│ │ ├── Friend.react.js 
│ │ ├── FriendList.react.js 
│ │ └── FriendSection.react.js // a querying-view, AKA controller-view 
│ └── photos 
│  ├── Photo.react.js 
│  ├── PhotoCategoryCard.react.js 
│  ├── PhotoCategoryCardTitle.react.js 
│  ├── PhotoGrid.react.js 
│  └── PhotoSection.react.js // another querying-view 
├── stores 
│ ├── FriendStore.js 
│ ├── PhotoStore.js 
│ └── __tests__ 
│  ├── FriendStore-test.js 
│  └── PhotoStore-test.js 
└── utils 
    ├── AppWebAPIUtils.js 
   ├── FooUtils.js 
    └── __tests__ 
     ├── AppWebAPIUtils-test.js 
     └── FooUtils-test.js 

सीएसएस निर्देशिका आमतौर पर, घटकों निर्देशिका का एक दर्पण की तरह लग रहा घटक प्रति एक सीएसएस फ़ाइल के साथ। कुछ लोग इन दिनों घटक पर अपनी सभी स्टाइल इनलाइन करना पसंद करते हैं।

उन सभी को ओवरथिंक न करें - स्टोर और क्वेरीिंग-व्यू या "सेक्शन" के बीच हमेशा 1: 1 है, जैसा कि इस उदाहरण में है।

और वास्तव में आपको केवल अपने ऐप के लिए सही करने की आवश्यकता है। यह मतभेद नहीं है। डेटा प्रवाह सामग्री, नियंत्रण में उलटा और दुकानों का decoupling - यह आपकी फ़ाइलों को व्यवस्थित करने के तरीके से कहीं अधिक महत्वपूर्ण विचार हैं।

+0

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

+0

यहां भी vouched: http://andrewcallahan.com/towards-a-simpler-react-folder-structure/ –

+0

तो प्रतीक्षा करें ... जब भी आप कोई कार्रवाई का उपयोग करते हैं, तो आपको '../../ someActions "'? वही अगर आपको अपनी किसी भी यूटिलिटी की ज़रूरत है, तो आपको कुछ फ़ोल्डर्स चलना होगा। अनुमोदित, हालांकि यह मेरे फ़ोल्डर संरचना की तुलना में पहले से ही चापलूसी है। – froginvasion

0

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

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

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

स्विचिंग के बाद से मैंने पीछे नहीं देखा है।

संबंधित मुद्दे