2013-08-01 7 views
9

में आलसी लोडिंग टेम्पलेट्स मैं जावास्क्रिप्ट ऐप के लिए आलसी लोडिंग करने के लिए require.js का उपयोग करता हूं। मुझे एक उल्का ढेर पर स्विच करना अच्छा लगेगा लेकिन अभी ऐसा लगता है कि मीटियर प्रारंभिक लोड के माध्यम से पूरे ऐप (सभी टेम्पलेट्स) भेजता है। क्या किसी को requ.js और उल्का या किसी अन्य कार्यान्वयन के साथ सफलता मिली है?मेटीर

उत्तर

5

आप अलग-अलग प्रश्न पूछ रहे हैं, लेकिन निश्चित रूप से वे जुड़े हुए हैं। पहला जावास्क्रिप्ट कोड को उल्का ऐप में लोड करने के बारे में है। बेशक आप requirejs जैसी चीज का उपयोग कर सकते हैं। यह ठीक से काम करना चाहिए कि आपका आलसी कोड publicउल्का प्रोजेक्ट की निर्देशिका में स्थित है। हालांकि, मेरा अनुभव यह है कि requirejs पागल हो जाता है जब public की सामग्री अक्सर अद्यतन हो जाती है, उदाहरण के लिए विकास वातावरण में। शायद यह पुस्तकालय को अनुकूलित करने की बात है, लेकिन मैं कुछ हल्के घर के बने पैकेज का उपयोग करने की सिफारिश करता हूं। here देखें, अगर आपको कुछ प्रेरणा की आवश्यकता है।

दूसरा प्रश्न आलसी टेम्पलेट परिभाषा के बारे में है। प्रत्येक टेम्पलेट में दो भाग होते हैं। पहला html कोड है, जो handlebars सिंटैक्स में लिखा गया है, दूसरा जावास्क्रिप्ट कोड है जिसे आप परिभाषित करने के लिए लिखते हैं कि आपका टेम्पलेट कैसा व्यवहार करना चाहिए (जैसे सहायक, ईवेंट हैंडलर)। दूसरा भाग आसान है, जब तक हम मानते हैं कि हम पहले से ही आलसी कोड को लोड करने के लिए जानते हैं (उपर्युक्त पैराग्राफ देखें) और टेम्पलेट, इसे myLazyTemplate पर कॉल करने दें, पहले से ही परिभाषित किया गया है, इसलिए मूल रूप से Template.myLazyTemplateundefined नहीं है। तो बाद वाले को कैसे प्राप्त करें?

गतिशील रूप से एक नया टेम्पलेट परिभाषित करने के लिए आपको क्लाइंट पर Template.__define__(name, raw_func) पर कॉल करने की आवश्यकता होगी। तो आखिरी सवाल यह है कि "raw_func क्या है?"। यह जो सामान्य रूप से सर्वर पर स्वचालित रूप से बनाया जाता है और फिर ग्राहक के लिए तार नीचे भेजा जब एप्लिकेशन लोड हो जाता है अपने एचटीएमएल कोड का एक संकलित संस्करण है (here देखने को देखने के लिए कि यह कैसे उल्का में किया जाता है)। लेकिन हम इसे गतिशील रूप से करना चाहते हैं, है ना?

तो विचार Handlebars.to_json_ast दिनचर्या की सहायता से टेम्पलेट कोड को मैन्युअल रूप से संकलित करना है। आप इसे अपने टेम्पलेट एचटीएमएल कोड से खिला सकते हैं, और आउटपुट कुछ जावास्क्रिप्ट सरणी है जिसे किसी भी समय क्लाइंट को भेजा जा सकता है जिस विधि से हमने पहले ही बात की है। आखिरी चीज आपको सर्वर पर Handlebars.json_ast_to_func पर कॉल करना है, सर्वर से भेजे गए डेटा का उपयोग केवल तर्क के रूप में करना है। Handlebars.json_ast_to_func द्वारा उत्पादित आउटपुट raw_func है जिसका उपयोग आप myLazyTemplate टेम्पलेट का उत्पादन करने के लिए कर सकते हैं।

मुझे पता है कि यह केवल एक कठिन विचार है, न कि आपकी समस्या का पूरा समाधान। मुझे आशा है कि इससे आपको अपने अंतिम समाधान को जानने में मदद मिलेगी।

+0

एक बहुत ही विस्तृत उत्तर के लिए धन्यवाद, यह केवल विवरण का स्तर था जिसे मैं ढूंढ रहा था। – James

+1

यह उत्तर शायद पुराना है। देखें [मीटरी में मांग पर आलसी लोड टेम्पलेट्स कैसे करें] (https://stackoverflow.com/a/28334315/1269037), और इसके लिए उपलब्ध पैकेज 2015 के रूप में उपलब्ध हैं। –