2010-09-22 9 views
6

मैं http://github.com/janl/mustache.jsक्या कुछ भी है जो मैं मूंछ से नहीं कर सकता?

का मूल्यांकन कर रहा हूं और मैं सोच रहा हूं कि यह समय के साथ सामान्य रूप से कैसे काम करेगा। अगर मैं सिर्फ एक विशाल वस्तु का निर्माण करता हूं, तो इसे किसी भी प्रकार के HTML में बदलने के लिए पर्याप्त मूंछ है?

तो, मेरा सवाल है। क्या कुछ भी है जो मूंछ नहीं कर सकता है?

(मेरे बारे में सोचा है कि यह HTML के लिए JSON से सिर्फ पेड़ परिवर्तन है, लेकिन मुझे यकीन है कि मान्य या उसके खिलाफ शर्त करने के लिए पर्याप्त विश्वास हासिल करने के लिए कैसे नहीं कर रहा हूँ)

आगे स्पष्टीकरण

मान लीजिए कि मेरे पास एक विशाल वस्तु थी और फिर मैंने एक पुनरावृत्ति में एक मूंछ टेम्पलेट दिया; क्या HTML में कुछ भी है जिसे इसकी भाषा के माध्यम से मूंछ में व्यक्त नहीं किया जा सकता है।

+1

मैं समुदाय विकी के लिए वोट देता हूं। – vol7ron

+3

नाम को देखते हुए मुझे उम्मीद है कि आप महिलाओं को झुकाव और एक औसत बेसबॉल फेंकने में सक्षम होंगे। – NickHeidke

उत्तर

8

चूंकि मूंछ जावास्क्रिप्ट में सिर्फ एक टेम्पलेट भाषा है, इसलिए आप जावास्क्रिप्ट में पहले से ही कुछ भी कर सकते हैं, और जावास्क्रिप्ट ट्यूरिंग पूर्ण है। तो नहीं, कुछ भी नहीं है कि आप मूंछ में नहीं कर सकते; वास्तव में, मूंछ में आप कुछ भी नहीं कर सकते हैं कि आप जावास्क्रिप्ट में स्वयं नहीं कर सकते हैं, यह कुछ चीजों को और अधिक सुविधाजनक बनाता है।

इस तरह कुछ मूल्यांकन करते समय, यह निर्धारित करने के बजाय कि यह क्या कर सकता है और नहीं कर सकता है, यह पूछने के लिए और अधिक उपयोगी है "क्या यह उन चीजों को बनाता है जिन्हें मुझे आसान करने की आवश्यकता है" और "क्या यह गलतियों को मैं करता हूं बनाने के लिए कड़ी से बचें। "

उदाहरण के लिए, इसका मूल्यांकन करने का एक तरीका यह होगा कि क्या यह cross-site scripting (XSS) हमलों से बचना आसान बनाता है। प्रलेखन के मुताबिक "mustache.js मानक डबल मूंछ सिंटैक्स का उपयोग करते समय सभी मानों से बचता है", ऐसा लगता है कि यह इस तरह के हमलों को रोकने में मदद करने का अच्छा काम करता है।

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

संपादित

यहां तक ​​कि आपके स्पष्टीकरण के बाद, यह अभी भी आप जो खोज रहे हैं वास्तव में स्पष्ट नहीं है। इनपुट के रूप में एकल दृश्य के साथ एक एकल मूंछ टेम्पलेट का विस्तार करने के लिए स्वयं को प्रतिबंधित करना, आप किसी भी मनमानी स्ट्रिंग का उत्पादन कर सकते हैं, और इस प्रकार किसी भी मनमानी HTML को केवल इनपुट के रूप में स्ट्रिंग देकर।

यदि आप पूछ रहे हैं कि आप टेम्पलेट और प्रस्तुत करने के लिए किसी भी मनमानी गणना को निष्पादित कर सकते हैं, तो इसका उत्तर भी हाँ है, क्योंकि मूंछ आपको अपने टेम्पलेट में फ़ंक्शन कॉल करने की अनुमति देता है, और वे कार्य लिखे गए हैं जावास्क्रिप्ट में, जो ट्यूरिंग पूर्ण है।

लेकिन ये दोनों छोटे जवाब हैं; आप इनपुट के रूप में प्रदान करके किसी दिए गए आउटपुट का उत्पादन कर सकते हैं, या आप उच्च-आदेश अनुभाग का उपयोग कर किसी दिए गए गणना को कर सकते हैं। जैसा कि मैंने पहले कहा था, इसके साथ क्या करना संभव है से इसके साथ क्या करना संभव है, और इसके साथ बनाने के लिए हार्ड क्या गलतियां हैं।

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

3

हां, मूंछ में आप कई चीजें नहीं कर सकते हैं। मूंछ कुछ अन्य पूर्ण-विशेषीकृत टेम्पलेट सिस्टम (जैसे Django में से एक) से सरल है। मूंछ एक बहुत ही कम टेम्पलेट सिस्टम है जो आपको "तर्क-रहित" टेम्पलेट्स को लागू करने के लिए (सुविधाओं की कमी के माध्यम से) को प्रोत्साहित करता है। इसका अर्थ यह है कि आप अन्य टेम्पलेट सिस्टम में कुछ प्रोसेसिंग कर सकते हैं, इसके बजाय कोड में किया जाना चाहिए जो टेम्पलेट पर भेजे गए डेटा को संशोधित करता है।

यह खराब टेम्पलेट सिस्टम नहीं है, यह केवल एक न्यूनतम प्रणाली है जिसका लक्ष्य सरल और तेज़ होना है।

तो, मैं कहूंगा कि इस सवाल का जवाब यह है: "हां, ऐसी चीजें हैं जिन्हें आप मूंछ में नहीं कर सकते (कुछ अन्य टेम्पलेट सिस्टम की तुलना में)"।

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

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