2012-10-25 12 views
9

बैकबोन.जेएस में, मॉडल लोडिंग और बचत AJAX कॉल के माध्यम से की जाती है। हालांकि, क्या AJAX के माध्यम से इसे नीचे खींचने के बिना पेज लोड पर प्रारंभिक संग्रह लोड करने के लिए कोई सर्वोत्तम प्रथाएं हैं? मैं जितना संभव हो उतना सर्वर साइड प्रतिपादन करने की कोशिश कर रहा हूं।Backbone.js में प्रारंभिक डेटा लोड करने का सबसे अच्छा तरीका क्या है?

अतीत में, मैंने एचटीएमएल को जावास्क्रिप्ट चर के साथ बीज किया है जिसमें प्रारंभिक डेटा स्थिति की एक जेसन स्ट्रिंग है, इसलिए इसे सर्वर की तरफ प्रस्तुत किया जा सकता है, लेकिन मुझे यकीन नहीं है कि यह एक अच्छा अभ्यास है या नहीं।

उत्तर

0

आपके द्वारा चुने गए दृष्टिकोण पर निर्भर करेगा कि आप कितना डेटा लोड करने की योजना बना रहे हैं और पृष्ठ के भीतर उस डेटा का उपयोग कैसे किया जाएगा।

यदि आवश्यक डेटा का अंततः पृष्ठ पर प्रस्तुत नहीं किया जाएगा, प्रारंभिक स्थिति को जावास्क्रिप्ट चर में बूटस्ट्रैप करना एक खराब मार्ग नहीं हो सकता है।

यदि डेटा सीधे पृष्ठ की प्रस्तुति से संबंधित है, तो, आप रीढ़ की हड्डी के अनुप्रयोग की प्रारंभिक स्थिति के लिए पूर्व-प्रस्तुत डीओएम का विश्लेषण करना पसंद कर सकते हैं। सावधानी के अनिवार्य शब्द यह है कि इस तरह की पार्सिंग कुछ हद तक धीमी होगी, खासकर बड़े डेटा सेट के लिए।

यदि आप पूर्व-प्रस्तुत सामग्री को पार्स करने का विकल्प चुनते हैं, तो मैंने थोड़ी देर पहले small jQuery DOM parser एक साथ रखा है जो प्रस्तुत सामग्री को बैकबोन-तैयार फ़ॉर्म में मैप करने के लिए उपयोगी साबित हो सकता है।

5

अगर यह जरूरी एक अच्छी आदत है पता नहीं है, लेकिन एक json वस्तु साथ एचटीएमएल बोने की इस पद्धति (नहीं एक json स्ट्रिंग आप के रूप में वर्णित है ना?,) निश्चित रूप से ऐसा करने का मेरा पसंदीदा तरीका है प्रारंभिक लोडिंग न केवल (स्पष्ट) कारण के लिए कि यह प्रारंभिक AJAX कॉल को लौटने के लिए प्रतीक्षा करने में देरी को हटा देता है, बल्कि यह भी कि एक कम खुला कनेक्शन ब्राउज़र को कुछ और लोड करने के लिए मुक्त करता है (जैसे एक img src या whatnot), आपको प्राप्त करना दस्तावेज करने के लिए। थोड़ा जल्दी लोड करें।

यह अनुशंसा की जाती है कि, इस विधि का उपयोग करते समय, आपने पृष्ठ पर स्थिर HTML तत्वों को मौका देने के लिए शरीर के निचले भाग (यानी मुख्य भाग में नहीं) पर एक स्क्रिप्ट टैग में कहा है पहले लोड और प्रस्तुत करने के लिए। Json डेटा तैयार है जब दस्तावेज़। ऑनलोड आग।

+0

इस दृष्टिकोण का केवल नकारात्मक पक्ष यह है, हम एक बैकएंड भाषा पैदा जावास्क्रिप्ट का एक mixup है, और आप पूरी "init" एप्लिकेशन के चरण कुछ .erb टेम्पलेट में है (या jsp/php/आदि) के बजाय है फिर जावास्क्रिप्ट भूमि में। यह कभी-कभी स्पेगेटी की तरह गंध करता है। –

1

Backbone docs से, स्क्रिप्ट टैग में मॉडलों को प्रारंभ करना एक बुरा अभ्यास नहीं है। मेरे वर्तमान प्रोजेक्ट में मैंने बाहरी जावास्क्रिप्ट में बैकबोन मॉडल को init करने में सक्षम होने के लिए window.projectData के अंदर केवल सादे ऑब्जेक्ट्स सेट करने का निर्णय लिया।

<script> 
    ;(window.projectData || (window.projectData = {})).modelName = {/* value */}; 
</script> 
संबंधित मुद्दे