2013-01-22 45 views
6

हमारे सभी ऐप्स php mvc हैं और क्लाइंट साइड पर शीर्ष पर एक बहुत ही सरल जेएस व्यवहार स्तर के साथ हैं। हम जावास्क्रिप्ट को और अधिक बनाना चाहते हैं और सरल व्यवहार निष्पादित करने के लिए "स्निपेट" का अनुरोध करना बंद कर देना चाहते हैं (जैसे, सभी जगहों पर विभिन्न jquery प्लगइन्स लोड करना)। हम जावास्क्रिप्ट एमवीसी ढांचे का उपयोग नहीं करते हैं और हमारे नए ऐप्स के लिए एक सर्वोत्तम फिट समाधान की तलाश में नहीं हैं।पुशस्टेट "हाइजैक्स" के लिए जावास्क्रिप्ट ढांचा

सबसे आकर्षक समाधान में से एक है हमारे लिए सर्वर पक्ष को प्रतिपादित करना, जैसे Twitter does। वे इसे "हिजैक्स + सर्वर-साइड प्रतिपादन" कहते हैं। ,

अनुबंध करके, हमारे घटकों एक भी डोम नोड के लिए खुद को संलग्न प्रतिनिधिमंडल, आग के माध्यम से घटनाओं को सुनने: हम एक पूर्ण विकसित MVC ढांचे जावास्क्रिप्ट लेकिन में ब्लॉग से इन उद्धरण हमारे लिए बहुत आकर्षक हैं देखना पसंद नहीं करते डीओएम पर घटनाएं, और उन घटनाओं को डीओएम कार्यक्रम बुलबुले के माध्यम से अन्य घटकों में प्रसारित किया जाता है। [...] दूसरा, हमारे सभी घटकों को एएमडी का उपयोग करके परिभाषित किया गया है।

हम अपनी खुद की कुछ बनाने की कोशिश कर रहे हैं, लेकिन उच्च स्तर की जावास्क्रिप्ट विशेषज्ञता के बिना हम इसमें दूर नहीं जा सकते हैं। jquery-pjax की तरह कुछ बहुत ही सरल मामलों के लिए भी एक अच्छा समाधान लगता है।

हम देख रहे:

  1. एक यूआई/डेटा अलगाव डोम
  2. घटना संचालित यूआई के साथ loosly जोड़ी एक्सएचआर, तो devs डोम के सभी प्रकार के लिए श्रोताओं संलग्न कर सकते हैं वस्तुओं
को

क्या इसके लिए जावास्क्रिप्ट ढांचे की तरह कुछ है? pushState के साथ अधिक से अधिक ध्यान प्राप्त करने के साथ, मुझे उम्मीद है कि कुछ उपलब्ध होगा। कोई विचार?

+1

आईएमओ ट्विटर का दृष्टिकोण काफी दुखी है। जून में वापस मैंने एक [डेमो जेएस बुकमार्कमार्क] लिखा था (http://dist.meekostuff.net/meeko-twitter/) और [लेख] (http://www.meekostuff.net/blog/Twitter-without-Hashbangs/) दिखा रहा है कि कैसे वे मोबाइल.twitter.com को क्रमशः बढ़ाकर 'pushState' पर माइग्रेट कर सकते थे। मैंने अपने [HTMLDecor] (http://github.com/meekostuff/HTMLDecor/) जेएस ढांचे का उपयोग किया और डेमो में केवल कुछ दिन लगे। ट्विटर ने माइग्रेट करने के लिए कितने मैन-महीनों का समय लिया? –

+0

दिलचस्प टिप्पणी शॉन :-) हालांकि, हम कामकाजी प्रदर्शन के कारण जेएस हिजाक्स में पारगमन नहीं करते हैं, हमें कभी-कभी व्यवहारिक स्क्रिप्टिंग की आवश्यकता होती है जहां एचटीएमएल नौकरी नहीं कर सकता है और हम अपने सर्वर साइड एप्लिकेशन को कम करना चाहते हैं। यही कारण है कि हमने सोचा कि हाइजैक्स हमारे लिए वास्तव में एक अच्छा फिट होगा। और जब जावास्क्रिप्ट अक्षम हो जाता है, तो आपको "पुराना" पूर्ण-पृष्ठ प्रस्तुत ऐप का फ़ॉलबैक प्राप्त करना चाहिए। और मैं पूरी तरह से "हैशबैंग्स मर चुका हूं" से सहमत हूं: वे अनावश्यक हैं और प्रगतिशील वृद्धि –

+0

है, यह नया twitter.com के साथ एक और मुद्दा है - जेएस अक्षम होने पर ट्वीट करने का कोई तरीका नहीं है। एक विचार के रूप में प्रगतिशील वृद्धि। –

उत्तर

0

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

मैं "यूआई/डेटा अलगाव" के अपने पहले बिंदु से शुरू करूंगा। यह अवधारणा वास्तव में चिंताओं को अलग करने के बारे में है। आप चाहते हैं कि आपका यूआई आपके डेटा से अलग से मौजूद हो। आप वास्तव में यहां जो खोज रहे हैं वह आपके एचटीएमएल के लिए आपके डेटा मॉडल की वर्तमान स्थिति को प्रतिबिंबित करना है। आप यह भी चाहते हैं कि यह आपके लिए स्वचालित रूप से हो। यह एक एमवीसी डिजाइन पैटर्न के साथ एक बहुत ही आम वर्कफ़्लो है। जावास्क्रिप्ट कई आप के लिए उपलब्ध विकल्प हैं: Backbone.js, AngularJS, EmberJS, और सूची पर चला जाता है ...

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

"इवेंट संचालित यूआई" भाग को विभिन्न जावास्क्रिप्ट पुस्तकालयों द्वारा किसी भी संख्या द्वारा संभाला जा सकता है। jQuery "सभी प्रकार के डोम तत्वों" को ईवेंट संलग्न करने के लिए शायद सबसे लोकप्रिय लाइब्रेरी है। Backbone.js भी ईवेंट ऑब्जेक्ट के साथ ईवेंट प्रतिनिधिमंडल (ईवेंट बबलिंग के माध्यम से) के आसान सेटअप की अनुमति देता है।

संक्षेप में, यदि आप अपनी जावास्क्रिप्ट में संरचना जोड़ना चाहते हैं ... यह वास्तव में बिल्कुल पर निर्भर करता है कि आप क्या चाहते हैं। केवल साधारण चीजों के लिए, हस्तनिर्मित jQuery का एक छोटा सा काम करेगा। यदि आप वास्तव में एक और एमवीसी स्टाइल ऐप चाहते हैं, जिसके पास बढ़ने की क्षमता है, तो बैकबोन जैसे एमवीसी ढांचे को जाने का रास्ता है।