2010-02-06 11 views
9

साथ jQuery का उपयोग कर रहा ग्राहक के लिए एक सर्वर साइड ढांचे से कुछ html पीढ़ी कार्यों विस्थापित करने के लिए शुरू कर कारगर बनाने के लिए। मैं क्लाइंट पर jQuery का उपयोग कर रहा हूँ। मेरा लक्ष्य एक आरईएसटी एपीआई के माध्यम से JSON डेटा प्राप्त करना है और इस डेटा का उपयोग पृष्ठ में HTML को पॉप्युलेट करने के लिए करें।क्लाइंट-साइड templating चौखटे बाकी/JSON

अभी, जब अपनी साइट पर एक उपयोगकर्ता मेरे परियोजनाओं के लिंक पर क्लिक करें, सर्वर इस तरह एचटीएमएल उत्पन्न करता है:

<dl> 
    <dt>Clean Toilet</dt> 
    <dd>Get off your butt and clean this filth!</dd> 

    <dt>Clean Car</dt> 
    <dd>I think there's something growing in there...</dd> 

    <dt>Replace Puked on Baby Sheets</dt> 
</dl> 

मैं तो यह बदल रहा है कि मेरे परियोजनाओं अब पर क्लिक करेंगे

[ 
    { 
    "name":"Clean Car", 
    "description":"I think there's something growing in there..." 
    }, 
    { 
    "name":"Clean Toilets", 
    "description":"Get off your butt and clean this filth!" 
    }, 
    { 
    "name":"Replace Puked on Baby Sheets" 
    } 
] 

मैं निश्चित रूप से कस्टम jQuery कोड लिख सकते हैं कि JSON लेते हैं और इसे से HTML उत्पन्न करने के लिए: GET अनुरोध है कि कुछ इस तरह देता है। यह मेरा सवाल नहीं है, और मुझे यह कैसे करना है इस बारे में सलाह की आवश्यकता नहीं है।

मुझे क्या करना पूरी तरह से तर्क (jQuery कोड) से प्रस्तुति और लेआउट अलग है चाहेंगे। मैं jQuery कोड के माध्यम से डीएल, डीटी, और डीडी तत्वों को बनाना नहीं चाहता। मैं कुछ प्रकार के HTML टेम्पलेट्स का उपयोग करूंगा जो मैं डेटा को भर सकता हूं। ये टेम्पलेट्स केवल HTML स्निपेट हो सकते हैं जो उस पृष्ठ में छिपे हुए हैं जिन्हें एप्लिकेशन से लोड किया गया था। या वे सर्वर से गतिशील रूप से लोड हो सकते हैं (उपयोगकर्ता विशिष्ट लेआउट, i18n, आदि का समर्थन करने के लिए)। उन्हें एक बार प्रदर्शित किया जा सकता है, साथ ही लूपिंग और दोहराने की अनुमति भी मिल सकती है। शायद इसे उप-टेम्पलेट्स का समर्थन करना चाहिए, यदि/तो/else, और बहुत आगे।

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

ढांचे के ही तरह है कि मैं इस तरह कुछ भी है कि मिल गया है jTemplates है। मुझे नहीं पता कि यह कितना अच्छा है, क्योंकि मैंने अभी तक इसका उपयोग नहीं किया है। पहली नज़र में, मैं इसके टेम्पलेट सिंटैक्स से रोमांचित नहीं हूं।

किसी अन्य चौखटे या प्लग इन है कि मैं इस पर गौर करना चाहिए के बारे में पता? कोई भी ब्लॉग पोस्ट या अन्य संसाधन जो इस तरह की चीज करने पर चर्चा करते हैं? मैं बस यह सुनिश्चित करना चाहता हूं कि मैंने इसे स्वयं बनाने से पहले सब कुछ सर्वेक्षण किया है।

धन्यवाद!

उत्तर

6

के डेमो उपयोग इस प्रश्न पोस्ट करने के बाद से चाहते हैं, मैं कई अन्य templating विकल्प मिल गया है। मैंने उनमें से कई को नीचे सूचीबद्ध किया है। हालांकि, हाल ही में jQuery templates proposal था जो अभी तक का सबसे आशाजनक समाधान हो सकता है। Jquery साइट पर discussion about it भी है।

अन्य समाधान मैं का सामना करना पड़ा शामिल (कोई विशेष क्रम में):

1

मैंने jTemplates का उपयोग कुछ बार किया है और मेरे अनुभव से यह अपने इच्छित उद्देश्य को पूरा करता है।

यदि हम क्लाइंट साइड पर चर्चा सीमित कर रहे हैं तो यह इस मामले पर मेरी अंतिम टिप्पणी है क्योंकि यह काम करता है और कुछ फंकी सिंटैक्स के बावजूद यह ठीक है, हालांकि चीजों के सर्वर पक्ष पर मैं निश्चित रूप से परिदृश्य को पसंद करूंगा जहां आप कुछ JSON पोस्ट करते हैं जो इन-मेमोरी ऑब्जेक्ट को deserialized है और फिर सत्यापित और सर्वर-साइड टेम्पलेट (जैसे एएसपीएक्स में एएससीएक्स) को पास किया गया है, जहां आपके पास उस भाषा की पूर्ण शक्ति है।

मेरी राय में, यदि क्लाइंट जावास्क्रिप्ट पर विचार करने के लिए आपके लिए पर्याप्त जावास्क्रिप्ट का समर्थन करता है तो मैं आपको एक जावास्क्रिप्ट उपयोगिता विधि स्थापित करने की अनुशंसा करता हूं जो आपको JSON भेजने और HTML प्राप्त करने की अनुमति देता है, जिससे संभावित परेशानी वाले मध्य व्यक्ति को काट दिया जाता है। । अधिकांश भाषाओं में JSON-पार्सिंग क्षमता होती है और jQuery "जेसन" के रूप में रिटर्न प्रकार निर्दिष्ट करके जेएसओएन में सर्वर प्रतिक्रिया को ऑटो-पार्स कर सकता है।

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

+1

आपके परिप्रेक्ष्य के लिए धन्यवाद, लेकिन मेरे मामले में बिंदु एचटीएमएल की सर्वर-साइड पीढ़ी से दूर जाना है। डेटा के प्रत्येक आइटम में बहुत सारी संपत्तियां होती हैं, और इन सभी गुणों को लपेटने के लिए आवश्यक सभी HTML को प्रतिक्रिया के आकार में काफी वृद्धि होती है। जब मैं सैकड़ों डेटा तत्वों से गुणा करता हूं, तो मेरी HTML प्रतिक्रिया कच्चे डेटा की तुलना में कई गुना अधिक हो सकती है। चूंकि मेरा एप्लिकेशन AJAX का उपयोग करता है और जावास्क्रिप्ट की आवश्यकता है, क्यों न केवल ब्राउज़र में इसे प्रस्तुत करें? – Tauren

+1

यदि सैकड़ों डेटा आइटम हैं, तो मार्कअप को प्रतिपादित करने वाले जावास्क्रिप्ट का प्रदर्शन सर्वर-साइड भाषा जैसे सी # या PHP से कहीं भी बदतर होगा। इसे gzip और AJAX कैशिंग के साथ संयोजित करें और यह वास्तव में अब कोई समस्या नहीं है। जब तक आप 2010 में सीपीयू समय के बारे में वास्तव में चिंतित नहीं हैं तब तक आगंतुक पर बोझ डालने और प्रतिपादन समय बढ़ाने का कोई वास्तविक कारण नहीं है। – tags2k

+0

प्रस्तुत करने का समय और बैंडविड्थ इस दिशा में जाने के लिए मेरे एकमात्र कारण नहीं हैं। हालांकि, हाल के ब्राउज़र वाले किसी भी गैर-प्राचीन कंप्यूटर को मेरे मन में जो काम है, उससे बहुत बोझ नहीं होना चाहिए। क्या आप यह कह रहे हैं कि jqGrid नियंत्रण (http://www.trirand.net/demophp.aspx) JSON/REST के माध्यम से पुनर्प्राप्त डेटा की 1000 पंक्तियों को डाउनलोड और प्रस्तुत करने के लिए अधिक समय लेगा, इससे पहले कि यह पहले से स्वरूपित HTML डाउनलोड कर लेगा और इसके साथ ग्रिड का आंतरिक HTML? मुझे यकीन है कि किसी भी तरह से बहुत नगण्य है। – Tauren

2

लगता है कि आपने sammy.js

http://code.quirkey.com/sammy/

वहाँ ट्यूटोरियल टेम्पलेट इंजन

+0

धन्यवाद! मैंने सैमी के बारे में सुना है लेकिन अभी तक इसमें नहीं देखा है। यह नहीं पता था कि यह भी templating करता है। मैं इसे देख लूँगा। – Tauren

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