2012-01-09 13 views
5

मैं एक रीढ़/backbone.js शैली वेब एप्लिकेशन लिखने की योजना बना रहा हूं जो मूल रूप से क्लाइंट के ब्राउज़र पर एक बड़ी application.js फ़ाइल स्थानांतरित करता है जो AJAX का उपयोग करके node.js बैकएंड के साथ संचार करता है। समस्या यह है कि मुझे नहीं पता कि इस तरह की एक परियोजना को कैसे व्यवस्थित किया जाए, क्योंकि मैंने कभी ऐसे एप्लिकेशन के उदाहरण नहीं देखे हैं। मैंमुझे सर्वर और क्लाइंट साइड कोड दोनों के साथ node.js वेब एप्लिकेशन लिखने के बारे में कैसे जाना चाहिए?

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

  • दो अलग-अलग परियोजनाएं बनाएं। एक ग्राहक के लिए और सर्वर के लिए एक। यह बहुत अधिक सरल और सीधे आगे लगता है, लेकिन जब संसाधनों को साझा करने की बात आती है तो सुरुचिपूर्ण नहीं है। मुझे दो बार फॉर्म इनपुट सत्यापन जैसे कोड लिखना होगा।

कोई विचार?

उत्तर

3

आपकी पहली स्थिति एक बहुत मुश्किल परिदृश्य है और मैं सुझाव दूंगा कि हम अभी तक काफी नहीं हैं। कुछ लोग तर्क देंगे कि वहां पहुंचने का प्रयास करने का कोई कारण नहीं है, क्योंकि फ्रंट/बैक सिरों को हमेशा थोड़ा और कभी-कभी काफी अलग-अलग कार्यों के साथ काम किया जाएगा। derby जैसे पुस्तकालय वादे दिखाते हैं, लेकिन अभी तक काफी कुछ नहीं हैं।

मैं एक दोस्त के साथ हाल ही में इस पर चर्चा की और हम निष्कर्ष है कि शायद अब के लिए सबसे अच्छा शर्त WebSockets से अधिक मॉडल क्रमानुसार करने होगा के लिए आया था, और उसके बाद यह सुनिश्चित करें कि नोड सर्वर और सिंक में क्लाइंट ऐप के ठहरने।

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

+0

मैं आपसे सहमत हूं। यदि यह विषय आने वाले महीनों/वर्षों में अधिक बदलता है तो मैं अपना स्वीकार्य उत्तर बदल दूंगा और एक बेहतर उत्तर साथ आता है – Hubro

0

यह आपके प्रश्न का पूरा उत्तर नहीं होगा, लेकिन यदि आप इस तरह के प्रयास को आगे बढ़ाने का विकल्प चुनते हैं तो एक लाइब्रेरी Browserify हो सकती है।

यह डिज़ाइन किया गया है ताकि आप मॉड्यूल स्रोत से उत्पन्न प्रीप्रोसेस्ड, या ऑन-द-फ्लाई के साथ एक समान आवश्यकता() फ़ंक्शन का उपयोग कर सकें, जेएस फ़ाइल में कई अलग-अलग मॉड्यूल शामिल हैं। इन मॉड्यूल को एक ही आवश्यकता() तंत्र के माध्यम से सर्वर पक्ष के साथ साझा किया जा सकता है।

मुझे सर्वर सिंक के लिए सर्वर साइड काउंटर भाग के रूप में सर्वर पक्ष पर लागू बैकबोन की व्याख्या नहीं है, जो कि आप जिस लक्ष्य को खोज रहे हैं, वह कोड को अलगाव करने वाला कोड लगता है, जैसे मॉडल और सत्यापन, उपयोगी रूप से साझा किया जा सकता है।

देखने के लिए एक और चीज requjs है, जो अधिक पारंपरिक स्क्रिप्ट टैग एसिंक्रोनस लोडिंग एफ जेएस मॉड्यूल का उपयोग करती है, लेकिन नोड और क्लाइंट कोड के बीच साझा किए जाने वाले समान एएमडी मॉड्यूल को अलोड करने वाले node.js के भीतर भी काम करती है। http://blog.nodejitsu.com/scaling-isomorphic-javascript-code

2

एक अच्छा लेख इस विषय को कवर नहीं है? अन्यथा डर्बी दृष्टिकोण थोड़ा बहुत भारी हो सकता है।Express.js एक ऐसी संरचना का प्रस्ताव करता है जहां क्लाइंट जेएस सार्वजनिक फ़ोल्डर में विभाजित है, और त्वरित रीस्टफुल एपीआई चलाने के लिए विधियां प्रदान करता है, जिसे आप अपने application.js के साथ एक्सेस कर सकते हैं। मुझे लगता है कि आप "क्लासिक" जेएस फ़ाइलों को सार्वजनिक रूप से eval() के माध्यम से नोड में लोड कर सकते हैं।

0

वास्तविक समय की जरूरत पड़ी:

0

चीजें बहुत आगे चला गया है अब, और

browserify प्रभावित कोडिंग तरह बातें हमें इस लक्ष्य को हासिल कर सकते हैं आसानी से मदद

वहाँ हमेशा सर्वर और ग्राहक पक्षों के बीच कुछ असामान्य कोड हो जाएगा, लेकिन लक्ष्य हमेशा किया जाएगा सभी तर्क कोड को विभिन्न मॉड्यूल में रखने के लिए (जिसे बाद में दोनों वातावरण से उपयोग किया जाता है)। यह टीडीडी बिंदु दृश्य से भी बेहतर है, यह भी आपके कुंजीपटल प्रेस गिनती को कम रखता है। http://mindthecode.com/lets-build-an-angularjs-app-with-browserify-and-gulp/

कहा करने के बाद कि आपके OPTION1 मुझे लगता है कि प्रबंधनीय नहीं मालूम था, अगर आप सही कोडर सही कोड कोडिंग था -

इस ढेर जैसी चीजों पर एक नज़र डालें।