2012-01-16 19 views
12

मैं अब कुछ दिनों के लिए Node.js जानने के लिए कोशिश कर रहे हैं, लेकिन वहाँ एक बात मैं के बारे में उलझन में हूँ है।Node.js: क्लाइंट-साइड Templating v/s सर्वर-साइड Templating

JQuery टेम्पलेट्स की तरह एक क्लाइंट-साइड templating समाधान और Node.js के लिए जेड की तरह एक सर्वर साइड समाधान के बीच क्या अंतर है?

प्रत्येक के लिए उपयोग क्या हैं? वे कहां उपयोग किए जाते हैं? क्या वे एक साथ इस्तेमाल किया जा सकता है? क्या उनमें से दोनों का एक साथ प्रयोग किया जा रहा है?

मैं बस इसके चारों ओर अपना सिर नहीं प्राप्त कर सकता। यहां किसी के आसपास से चीजों का अवलोकन करना अच्छा लगेगा ...

उत्तर

27

क्लाइंट-साइड बनाम सर्वर-साइड टेम्पलेटिंग के बारे में सबसे बड़ी बात माना जाना चाहिए कि क्लाइंट-साइड टेम्पलेटिंग काम नहीं करेगी अगर जावास्क्रिप्ट अक्षम है किसी भी कारण से ग्राहक।

अन्यथा यह इस तरह के एक बड़ा अंतर नहीं है। यह ज्यादातर इस बात पर निर्भर करता है कि आप सर्वर पर या क्लाइंट पर अपना मार्कअप जेनरेट करना चाहते हैं या नहीं।

क्लाइंट साइड टेम्पलेट का उपयोग करने के लिए एक विशिष्ट कारण यदि आप किसी एप्लिकेशन जो ajax का उपयोग कर, WebSockets या इस तरह के सर्वर से अधिक डेटा लोड है। ऐसे मामले में आप नए लोड किए गए डेटा को प्रस्तुत करने के लिए क्लाइंट-साइड टेम्पलेट रखना चाहेंगे।

उदाहरण के लिए:

एक आवेदन मैंने लिखा में, मैं सर्वर पर EJS टेम्प्लेट का उपयोग कर बुनियादी मार्कअप उत्पन्न करने के लिए: सिर, शरीर, पाद लेख, आदि - सामग्री है जो नहीं बदलता है।

आवेदन socket.io, जो क्लाइंट सर्वर से कुछ घटनाओं और डेटा भेजता उपयोग करता है। इस डेटा को प्रदर्शित करने के लिए, मैंने नॉकआउटज के क्लाइंट-साइड टेम्पलेटिंग का उपयोग किया।

तो मेरे मामले में यह एक संकर दृष्टिकोण की तरह है। कारण मैंने ऐसा इसलिए किया क्योंकि सर्वर पर उत्पन्न मार्कअप तुरंत पृष्ठ लोड होने के तुरंत बाद दिखाएगा। Socket.io से आता है जो डेटा सर्वर पर एचटीएमएल में भी प्रस्तुत किया जा सकता था, लेकिन इसे सरल JSON ऑब्जेक्ट्स भेजने या भेजने के बजाय भेजने के लिए अधिक बैंडविड्थ की आवश्यकता होगी, इसलिए मैंने उन्हें क्लाइंट पर प्रस्तुत करने का विकल्प चुना।

स्पष्ट रूप से मैं पूरी साइट के लिए क्लाइंट-साइड टेम्पलेट का उपयोग कर सकता था, लेकिन मुझे क्लाइंट पर स्थिर भागों को प्रस्तुत करने में कोई फायदा नहीं हुआ। यह सिर्फ मेरे आवेदन के क्लाइंट-साइड कोड को और अधिक जटिल बना देगा।

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