2010-12-19 14 views
14

jQuery टेम्पलेट्स प्लगइन की स्थिति के साथ, मैं सोच रहा हूं कि सर्वर-साइड और क्लाइंट-साइड टेम्पलेट्स को कैसे बनाए रखना है।सर्वर साइड टेम्पलेट्स, क्लाइंट साइड टेम्पलेट्स - स्वचालित रूपांतरण?

क्योंकि मेरे मामले में, मेरे पास कुछ टेम्पलेट्स हैं, जो डुप्लिकेट होंगे - सर्वर-साइड के साथ-साथ क्लाइंट-साइड। बस इस कल्पना:

आप एक फार्म है, जहां आप सूची अंक में प्रवेश कर सकते हैं। जब आप सबमिट दबाते हैं, तो एक AJAX अनुरोध उत्पन्न होता है लेकिन प्रविष्टि पहले से ही आपके पृष्ठ पर दिखाई दे रही है।

अब, इस बुलेट बिंदु के लिए मार्कअप एक जैसा होना चाहिए - गीला यह जेएस के माध्यम से या मेरे PHP/.NET/जो भी आवेदन द्वारा उत्पन्न किया गया था।

वहाँ उन टेम्पलेट्स बनाए रखने/उन्हें सिंक में रखने के लिए किसी भी अच्छे तरीके हैं? या क्या मुझे वास्तव में दोनों टेम्पलेट्स को मैन्युअल रूप से बनाए रखना है?

जे एस टेम्पलेट का उपयोग कर आवेदन पत्र में अपने अनुभव क्या है?

+0

ग्रेट प्वाइंट आप लाते हैं, और मुझे आश्चर्य है कि यह और अधिक नहीं बोली जाती है। मैंने फिल हैक से इस बारे में पूछा (http://haacked.com/archive/2010/11/09/asp-net-mvc-3-release-candidate.aspx) यह जवाब उलझन में था - डेव वार्ड भी उल्लेख jquery tmpl व्यू इंजन की आवश्यकता - http://encosia.com/2010/12/02/jquery-templates-composite-rendering-and-remote-loading/। – redsquare

+0

मैंने अभी https://github.com/awhatley/jquery-tmpl.net और https://github.com/xyu/jquery-tmpl-php देखा - दोनों jQuery tmpl इंजन को .NET/PHP पर पोर्ट करने का प्रयास करें। –

+0

एक दिलचस्प उपयोग केस जोड़ा गया जो आपके लिए किसी दिन उपयोगी हो सकता है। अच्छा सवाल है कि हमें कुछ महीने पहले हल करना पड़ा था। – MarioRicalde

उत्तर

0

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

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

0

इंजन स्पार्क देखें (नेट) एक जावास्क्रिप्ट प्रतिपादन functionnality है: http://blog.robertgreyling.com/2009/11/teaching-javascript-how-to-render-your.html

एक और तरीका है ajax का उपयोग करने से अद्यतन एचटीएमएल प्राप्त करने के लिए, टेम्पलेट्स के केवल एक सेट ही सर्वर साइड प्रतिपादन करना है के लिए सर्वर।

-1

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

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

5

आप JS- पसंद है> पीएचपी प्राथमिकता :) तो आप इस दो jQuery-Tmpl संगत टेम्पलेट पीएचपी बैकएंड के लिए रेंडरर है

  1. https://github.com/abackstrom/jquery-tmpl-php
  2. https://github.com/xyu/jquery-tmpl-php

यदि आप चाहें, अधिक PHP-> जेएस प्राथमिकता :) तो आप लोकप्रिय PHP टेम्पलेटिंग Smarty

के इस जावास्क्रिप्ट कार्यान्वयन को आजमा सकते हैं
  1. http://code.google.com/p/jsmart/

या आप की तरह अधिक तटस्थ कुछ कोशिश कर सकते हैं:

  1. मूंछें http://mustache.github.com/
0

मैं आमतौर परदृश्य पर संग्रहीत; यहां मैं आपको jquery-tmpl के लिए एक बहुत ही रोचक उपयोग-मामले के बारे में बताने जा रहा हूं।

मैंने साइट पर jquery-tmpl का उपयोग किया है, जो कि बड़ी संख्या में अनुरोधों के कारण, एक तकनीक की आवश्यकता है जिसे मैं decontextualization पर कॉल करता हूं। इस तकनीक को अभी पीक आवर्स के दौरान जीवित रहने के लिए लागू किया गया था और यह निम्नलिखित नियमों पर विशुद्ध रूप से होते हैं:

  1. कभी सर्वर स्पर्श पेज एक बार से अधिक पुनर्जीवित करने के लिए; जब तक कि यह बिल्कुल निपुणता है।
  2. की स्थिति प्रदान करने के लिए जावास्क्रिप्ट का उपयोग करें जो उपयोगकर्ता है और उसके पास क्या विशेषाधिकार है।

मन में उन दो नियमों के साथ आप देख सकते हैं कि jquery-tmpl तर्क की मूल राशि यह प्रदान की साथ बस दिए गए मामले के लिए राजसी था। मैंने मूल रूप से jquery-tmpl टेम्पलेट्स को उन दस्तावेज़ों में शामिल किया है जिन्हें descontextualized होना आवश्यक है। सभी टेम्पलेट्स पृष्ठ द्वारा ही प्रदान किए गए थे; तो मैं एक d18n जावास्क्रिप्ट पुस्तकालय जो निम्नलिखित कर सकता है कर सकता है:

  1. क्वेरी वर्तमान उपयोगकर्ता के बारे में वास्तव में तेजी से स्क्रिप्ट, एक JSON वस्तु के रूप में डेटा वापस।
  2. JSON को पार करें और निर्दिष्ट चयनकर्ताओं पर दस्तावेज़ पर प्रदान किए गए टेम्पलेट्स शामिल करें। jquery-tmpl गणित करें।

जब भी हम "tempalte" करने के लिए एक संशोधन करने के लिए की जरूरत है कि हम इसे उसी तरह कर के रूप में हम यह करना होगा अगर वहाँ था कोई jquery-tmpl उपलब्ध होगा: दृश्य पर/आंशिक

आप "इस तरह के उपयोगकर्ता पोस्ट पोस्ट कर सकते हैं" के लिए ऐसा कुछ देखेंगे? टेम्पलेट:

<script id="post-edit-button" type="text/x-jquery-tmpl"> 
    {{if user_id == "<%= post.user.id %>" || role == "staff" || $.inArray(user_id, EDITORS) }} 
    <a href="<%= edit_post_url(post) %>">Edit</a> 
    {{/if}} 
</script> 

आशा है कि मेरा अनुभव कुछ हद तक आपके लिए उपयोगी होगा।

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