2013-05-12 7 views
112

जेड बनाम ईजेएस, प्रत्येक के पेशेवरों और विपक्ष क्या हैं और प्रत्येक के लिए किस उद्देश्य के लिए डिज़ाइन किया गया है?Node.js templating के लिए जेड और ईजेएस दोनों के पेशेवरों और विपक्ष क्या हैं?

क्या any other express-compatible template engines अच्छे हैं और क्यों?

उत्तर

166

मैंने पहले जेड का उपयोग किया था। जेड के बारे में अच्छी बात यह है कि आपके पास एक छोटा वाक्यविन्यास है जिसका अर्थ है कि आप तेज़ी से टाइप कर सकते हैं। जेड में block बहुत शक्तिशाली है जो जटिल HTML कोड से निपटने के दौरान मुझे बहुत मदद कर सकता है।

दूसरी ओर, जेड में कुछ सरल चीजें करना मुश्किल है, जैसे कि स्थिति के आधार पर डीआईवी में कक्षाएं जोड़ने जैसी चीज। मैं भी इस

- if (isAdmin) 
    div.admin.user 
- else 
    div.user 

जेड की तरह कुछ डाल करने के लिए की जरूरत है (कम से कम मेरे लिए) टैग और चर जो कोड बहुत भ्रमित कर के बीच अंतर नहीं है

a(href='/user/' + user.id)= user.name 

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

table 
    thead 
    tr 
     td 
     a 
      img 
    tr 
     td 
    tbody 
    tr 
     td 

पर हूँ, मैं EJS करने के लिए एक स्विच कर दिया और मैं अब तक इसके साथ खुश हूँ। यह शुद्ध एचटीएमएल के बहुत करीब है और उसी वाक्यविन्यास का उपयोग करें जो मैं सामने वाले टेम्पलेट इंजन का उपयोग कर रहा हूं (अंडरस्कोर टेम्पलेट)। मुझे कहना होगा कि ईजेएस के साथ सबकुछ आसान है। मेरे डिजाइनर मित्र से HTML टेम्पलेट प्राप्त करते समय मुझे सभी रूपांतरण करने की ज़रूरत नहीं है। मुझे बस इतना करना है कि ExpressJS से पारित चर के साथ गतिशील भागों को प्रतिस्थापित करना है। सामग्री है कि मुझे पागल बना जब जेड का उपयोग कर EJS

<div class="<%= isAdmin? 'admin': '' %> user"></div> 

में हल कर रहे हैं और मुझे पता है सकते हैं क्या है क्या EJS साथ

<a href="/user/<%= user.id %>"><%= user.name %></a> 

आप जेड (मेरे जैसे) के कम वाक्य रचना चूक जाते हैं तो आप को जोड़ सकते हैं जेन-कोडिंग और ईजेएस जो आपको सामान्य रूप से प्रगति को तेज करने में मदद कर सकते हैं। प्रदर्शन के बारे में, मैं नहीं दिख रहा कोई अंतर

हालांकि, EJS जेड के रूप में के रूप में शक्तिशाली नहीं है, यह डिफ़ॉल्ट रूप से ब्लॉक नहीं है

(इस आदमी EJS https://github.com/RandomEtc/ejs-locals के लिए एक ब्लॉक सुविधा को लागू) इसलिए, यह जो भी आपको आरामदायक बनाता है उसे चुनने के लिए पूरी तरह से निर्भर करता है। लेकिन यदि आप मेरे जैसे फ्रंटएंड के लिए एक और टेम्पलेट इंजन का उपयोग करने जा रहे हैं, तो बेहतर है कि आप दोनों पक्षों के लिए एक ही चीज़ का उपयोग करते हैं

अपडेट 16 दिसंबर 2013: हाल ही में, मैंने ईजेएस से स्विग तक स्विच किया है (जो समान है पाइथन दुनिया में Jinja2 के रूप में अवधारणा)। मुख्य कारण ejs-locals की सहायता से ईजेएस में ब्लॉक की कमी है। स्विग टेम्पलेट्स के लिए सादे एचटीएमएल का उपयोग कर रहा है और बहुत सी शानदार फीचर्स जो टेम्पलेट इंजन के लिए उदाहरण के लिए फिल्टर और टैग्स होनी चाहिए, जिनके पास ईजेएस

+1

यह जानने के संबंध में कि आप किस स्तर पर हैं, यह उल्लेख किया जाना चाहिए कि जेड के पास एक ही पंक्ति पर एकाधिक टैग के लिए नया समर्थन है। जेड के दस्तावेज़ीकरण से, 'अंतरिक्ष को बचाने के लिए, जेड नेस्टेड टैग के लिए एक इनलाइन वाक्यविन्यास प्रदान करता है।' एएमजी '' के बराबर है। –

+1

मैंने एक या दो साल पहले 'जेड' की कोशिश की थी। शायद यह अब बेहतर हो रहा है। हालांकि मेरे पहले बिंदु को दोबारा शुरू करना, –

+1

के आस-पास जाना आसान नहीं होगा क्या आपने [html2jade] (http://html2jade.com/) देखा है? – tjameson

37

मैं नहीं कहूंगा कि एक दूसरे से बेहतर है। वे अलग हैं, यह निश्चित रूप से है, लेकिन "बेहतर" काफी सापेक्ष शब्द है।

मैं ईजेएस पसंद करता हूं क्योंकि मुझे लगता है कि HTML बहुत खराब नहीं है, और यह मुझे जेड सीखने के बिना दूसरों के साथ काम करने की अनुमति देता है।

हालांकि, जेड बल्कि साफ है और आपके विचारों में कुछ साफ कोड बनाता है।

जो भी आप अधिक आरामदायक महसूस करते हैं उसे चुनें।

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