2011-02-13 12 views
7

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

उसने कहा, ऐसी कई चीजें हैं जो वेब ढांचे आपके लिए करने की कोशिश नहीं करते हैं। रेल और jQuery जैसे आईएमएचओ ढांचे सफल रहे हैं क्योंकि वे आपको 80% करने का प्रयास करते हैं, जिससे आप अगले 20% कर सकते हैं। 80% करने से उन्हें बहुत ही लचीला या अजीब बनने के बिना व्यापक रूप से उपयोग करने के लिए पर्याप्त लचीला होने की अनुमति मिलती है। तो सवाल बन जाता है, आप 20% शेष के साथ क्या करते हैं, खासकर जब आपका आवेदन बड़ा हो जाता है?

हमने पिछले 1.5 वर्षों से रेल/jQuery-UI एप्लिकेशन विकसित और बनाए रखा है। जैसा कि कहा गया है, उन ढांचे की असंगत शक्ति हमें तेजी से गति, हमारे उत्पादकता को बनाए रखने और अच्छे डिजाइन को मजबूत करने के लिए महान साबित हुई। हालांकि, पिछले कुछ महीनों में, मैंने यह सोचना शुरू कर दिया है कि हमें नई सुविधाओं को और भी तेज़ी से विकसित और तैनात करने में सक्षम होना चाहिए, और मुझे यह महसूस करना शुरू हो गया है कि हमने उन रडिमेंट्स के ऊपर पर्याप्त निर्माण नहीं किया है जो रेल और jQuery देता है हमें। अपेक्षाकृत 90-95% बिंदु की बजाय नई सुविधाओं को हर समय उस 80% बिंदु से विकसित करना होगा।

वेब ढांचे से आगे बढ़ने के लिए आपकी रणनीतियां क्यों हैं? 80% प्रारंभिक बिंदु 90-95% के करीब जाने के लिए आपने किन तकनीकों या तकनीकों का उपयोग किया है? आप अपने स्वयं के आवेदन ढांचे या टूलकिट के निर्माण के लिए क्या विशेष बाधाओं का सामना करते हैं या पराजित करते हैं? वेनिला रेल और jQuery पर विकसित होने वाले रबड़ क्या थे जो आपको कड़े अनुप्रयोग एकीकरण की तलाश में धकेलते थे?

उत्तर

2

मैं सर्वर-साइड फ्रेमवर्क के साथ वास्तव में बहुत कुछ नहीं करता क्योंकि हमारे एएसपी.नेट बैकएंड पहले ही 90% हैंडल करता है और सभी कस्टम सर्वर-साइड नियंत्रण सभी ने पिछले 5% के साथ सौदों को लिखा है।

क्लाइंट पक्ष की अवधि में सामान्य आप सामान्य उपयोग करने योग्य नियंत्रण लिखने के अलावा कुछ भी नहीं कर सकते हैं। मैं jQuery का उपयोग करने का मुख्य कारण यह है क्योंकि यह क्रॉस-ब्राउज़र अनुपालन को दूर करता है। मैं इसका उपयोग करता हूं जैसे कि मैं जावास्क्रिप्ट के साथ करता हूं सिवाय इसके कि यह आईई में आसानी से काम करता है।

jQuery के शीर्ष पर पुनः उपयोग करने योग्य नियंत्रण बनाएं। कस्टम प्लगइन बनाओ। अपने द्वारा लिखे गए सभी कस्टम कोड को और अधिक सामान्य बनाएं ताकि आप इसे प्रोजेक्ट से प्रोजेक्ट में फिर से उपयोग कर सकें।

मैं आपको backbone.js पर एक नज़र डालने की सलाह देता हूं। यह एक क्लाइंट-साइड एमवीसी फ्रेमवर्क है जो वास्तव में आपको अपने वेब एप्लिकेशन को कस्टमाइज़ करने की अनुमति देता है। इस तरह के एक एमवीसी ढांचे के शीर्ष पर बिल्डिंग कोड को विस्तारित और बहुत प्रबंधनीय बनाता है। इसके बारे में अच्छी बात यह है कि आपके पास बहुत अधिक नियंत्रण है और आप अपने स्वयं के सामान्य ढांचे को ऊपर से उपयोग करने की अनुमति दे सकते हैं, फिर से उपयोग करने के लिए & पुन: उपयोग करें।

याद रखने वाली महत्वपूर्ण चीज़ों में से एक है jQuery की अंतर्निहित लाइब्रेरी में क्रॉस-ब्राउज़र अनुपालन को प्रतिनिधि करना और फिर इसके शीर्ष पर अबास्ट्रक्शन बनाना।

मेरे व्यक्तिगत अनुभव में जेनेरिक खराब कोड हर जगह चारों ओर झूठ बोल रहा है और हमें jQuery की सीमाओं को और अधिक खींच रहा है। शायद अगर हर कोई महान कोड लिखता है तो हम jQuery की सीमाओं को नोटिस करेंगे। मैं अभी तक एएसपी.NET ढांचे की कोई सीमा नहीं देख सकता हूं।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। प्रतिक्रियाओं को पढ़ना, यह पूरी तरह स्पष्ट नहीं हो सकता है कि मैं कड़े अग्रभाग और बैकएंड एकीकरण पर विचार कर रहा हूं, लेकिन आप इसे नाक पर मारा। हम पुन: प्रयोज्य फ्रंटएंड विजेट बनाने के लिए [jQuery UI विजेट अबास्ट्रक्शन] (http://bililite.com/blog/understanding-jquery-ui-widgets-a-tutorial/) का उपयोग करके पुन: प्रयोज्य जेएस विजेट बना रहे हैं, लेकिन हम हेवन इस तरह के बैकएंड एकीकरण को जोड़ा नहीं है जिसके बारे में आप यहां बात कर रहे हैं। मैं जांच करने के लिए अन्य क्लाइंट-साइड फ्रेमवर्क की हमारी सूची में backbone.js जोड़ूंगा: knockout.js और jQueryMVC। – jmaxyz

3

फ्रेमवर्क और पुस्तकालय आपको "20%" नोट करते हैं ताकि आप उनके ऊपर बना सकें। यदि आप पाते हैं कि आप अभी भी काम कर रहे हैं, बेयरबोन, उस 80% स्तर पर हर बार जब आपको कोई नई सुविधा या कार्यक्षमता जोड़ने की आवश्यकता होती है तो आपने कुछ भी नहीं किया है।

व्यक्तिगत रूप से, मैं कई पीएचपी चौखटे जहाँ मैं कस्टम पुस्तकालयों और शीर्ष पर कार्यक्षमता है कि 90-95% के स्तर तक अपनी परियोजनाओं लेने में मदद करता है कि निर्माण का उपयोग किया है। आपकी परियोजना का 15% का अंतर बहुत महत्वपूर्ण है। उस कोड के कुछ उदाहरण इस प्रकार हैं: उपयोगिता कार्य, अनुमति प्रणाली, आंतरिक एपिस और टेम्पलेट प्रबंधक (जो आपके विचारों के साथ डेटा प्रस्तुत करने में सहायता करते हैं)।

क्लाइंट साइड के लिए के रूप में, जावास्क्रिप्ट, पुस्तकालयों (jQuery, प्रोटोटाइप, डोजो आदि) यह लग रहा है आप लंबे समय सोचा नहीं किया है। अधिक से अधिक लोग यह महसूस कर रहे हैं कि किस लाइब्रेरी का उपयोग करने के बारे में सोचने से पहले उन्हें सख्ती से जावास्क्रिप्ट एप्लिकेशन संरचना से शुरुआत करने की आवश्यकता है। पुस्तकालय घटनाओं को बाध्य करने, तत्वों का चयन करने आदि के कुछ मानक तरीके प्रदान करते हैं, लेकिन किसी के पास वास्तव में बड़े पैमाने पर एप्लिकेशन तर्क नहीं बनाया गया है। आपको इसे स्वयं बनाने की आवश्यकता है।

ढीला युग्मन (या Pub/Sub - सदस्यता लें प्रकाशित) वास्तव में लोकप्रिय हो गया है और वहाँ कुछ महान पुस्तकालयों कि MVC के साथ मदद और jQuery BBQ और Backbone.js तरह स्थिति को देखने (जैसे @Raynos सुझाव दिया) कर रहे हैं। यह तर्क आपको अपने ऐप में मानक के तरीके में नई कार्यक्षमता को स्केल और सही ढंग से प्रबंधित करने में सहायता करता है। उस ने कहा, आपको अभी भी समझना चाहिए और पूरी तरह लाइब्रेरी-कम एप्लिकेशन संरचना के साथ शुरू करना चाहिए जिसे आप समझते हैं। मैंने इस बारे में एक अच्छा पोस्ट किया है (http://darcyclarke.me/development/javascript-applications-101/) और एडी ओस्मानी यहां इसके लिए महान संसाधन भी प्रदान करता है (http://addyosmani.com/blog/large-scale-jquery/)। सर्वर-साइड के बाद थोड़ा अलग, मेरा सुझाव है कि आप पुस्तकालय का उपयोग करने के निर्णय में गोता लगाने से पहले उस 15-20% का निर्माण करें। वे, आखिरकार, कई सुविधाएं हैं और अपने ग्राहक पक्ष ऐप को बनाने के लिए पूरी तरह से भरोसा नहीं किया जाना चाहिए।

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

+0

मैं तर्क दूंगा कि 'jQuery बीबीक्यू' जैसे व्यूस्टेट प्रबंधन वास्तव में आपके सर्वर-साइड से संबंधित हैं। – Raynos

+0

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

+0

जावास्क्रिप्ट टेम्पलेटिंग भी है हाल ही में बेहद लोकप्रिय हो गया है जो अधिक क्लाइंट साइड मैनेजमेंट और व्यूस्टेट को प्रस्तुत करने का एक और कारण होगा। Mustache.js (https://github.com/janl/mustache.js/) और आधिकारिक jQuery टेम्पलेट प्लगइन (http://api.jquery.com/category/plugins/templates/) केवल दो में से दो हैं उग आया है इसके अलावा, जो आंतरिक रूप से, क्लाइंट साइड या तृतीय पक्षों द्वारा उपयोग किए जाने वाले व्यूस्टेट डेटा को सेवा देने के लिए एपीआई बनाने में प्यार नहीं करता है – darcy

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