मैं एक रेल ऐप का निर्माण कर रहा हूं जो क्लाउड को सीधे अपडेट करने के लिए वेब सॉकेट का उपयोग करने के लिए पुशर का उपयोग करता है। जावास्क्रिप्ट में:जावास्क्रिप्ट और ईआरबी टेम्पलेट्स (रेल) दोनों का उपयोग करते समय DRY कैसे रहें
channel.bind('tweet-create', function(tweet){ //when a tweet is created, execute the following code:
$('#timeline').append("<div class='tweet'><div class='tweeter'>"+tweet.username+"</div>"+tweet.status+"</div>");
});
यह कोड और प्रस्तुति का गंदा मिश्रण है। तो प्राकृतिक समाधान एक जावास्क्रिप्ट टेम्पलेट का उपयोग करना होगा। शायद पर्यावरण या मूंछें:
//store this somewhere convenient, perhaps in the view folder:
tweet_view = "<div class='tweet'><div class='tweeter'>{{tweet.username}}</div>{{tweet.status}}</div>"
channel.bind('tweet-create', function(tweet){ //when a tweet is created, execute the following code:
$('#timeline').append(Mustache.to_html(tweet_view, tweet)); //much cleaner
});
यह अच्छा है और सब है, सिवाय इसके, मैं अपने आप को दोहरा रहा हूँ। मूंछ टेम्पलेट ईआरबी टेम्पलेट्स के समान 99% है जो मैंने पहले ही सर्वर से एचटीएमएल प्रस्तुत करने के लिए लिखा है। मूंछ और ईआरबी टेम्पलेट का इच्छित आउटपुट/उद्देश्य 100% समान है: एक ट्वीट ऑब्जेक्ट को ट्वीट एचटीएमएल में बदलने के लिए।
इस पुनरावृत्ति को खत्म करने का सबसे अच्छा तरीका क्या है?
अद्यतन: भले ही मैंने अपने स्वयं के प्रश्न का उत्तर दिया, मैं वास्तव में अन्य लोगों से अन्य विचार/समाधान देखना चाहता हूं - इसलिए बक्षीस!
: मूंछ (जिसे आपने पहले ही उल्लेख किया है) सर्वर-साइड प्रतिपादन के लिए भी अनुमति देता है (देखें: कार्यान्वयन के लिए http://mustache.github.com/)। प्रवाह अब बन जाता है: एक मूंछ-टेम्पलेट + एन लगातार क्लाइंट-साइड रेंडरिंग का उपयोग करके 1 इंटिटल सर्वर-साइड रेंडरिंग एक ही मूंछ-टेम्पलेट –
का उपयोग करके बहुत धन्यवाद। मैं उन पर एक नज़र डालेगा। – user94154
fyi: मैंने अभी एक समान प्रश्न पूछा है (मूंछ बीसी के विकल्पों की तलाश में)। हालांकि प्रवाह वही रहेगा। शायद यह भी मदद करता है। देखें: http://stackoverflow.com/questions/6831718/client-side-templating-language-with-java-compiler-as-well-dry-templating –