Node.js टेंपलेटिंग के लिए जेड और ईजेएस दोनों के पेशेवरों और विपक्ष क्या हैं? [बन्द है]


118

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

क्या कोई अन्य एक्सप्रेस-संगत टेम्पलेट इंजन हैं जो अच्छे हैं और क्यों?

जवाबों:


179

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

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

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

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

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

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

table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

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

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

और मैं जान सकता हूं कि ईजेएस के साथ क्या है

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

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

हालाँकि, EJS जेड की तरह शक्तिशाली नहीं है, इसमें डिफ़ॉल्ट रूप से ब्लॉक नहीं हैं (इस लड़के ने EJS https://github.com/RandomEtc/ejs-locals के लिए ब्लॉक फीचर लागू किया है )

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

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


1
यह जानने के बारे में कि आप किस स्तर पर हैं, यह उल्लेख किया जाना चाहिए कि जेड को एक लाइन पर कई टैग के लिए नया समर्थन है। जेड के प्रलेखन से, 'अंतरिक्ष को बचाने के लिए, जेड नेस्टेड टैग के लिए एक इनलाइन वाक्यविन्यास प्रदान करता है।' ए: 'img' '<a> <img /> </a>' के बराबर है।
वर्डी एरल एरगुएन

1
मैंने Jadeएक या दो साल पहले कोशिश की थी। शायद अब यह बेहतर हो रहा है। हालाँकि, मेरी पहली बात को फिर से पा लेना, यह आसान नहीं होगा
टैन न्गुयेन

1
क्या आपने html2jade देखा है ?
बीटगैमट

4
मैंने आपको वह उपकरण दिया था, लेकिन फिर भी, हर बार जब डिजाइनर मुझे कुछ देता है, तो मुझे रूपांतरण करने की आवश्यकता होती है (यह कष्टप्रद है)
तान गुयेन

1
मैं बस (सशर्त के बारे में अपने पहले बिंदु के बारे में) नोट करना चाहता था कि आप इस उपयोग के मामले के लिए टर्नरी सिंटैक्स का उपयोग करने में सक्षम हो सकते हैं। इस स्टैक ओवरफ्लो प्रश्न को देखें: stackoverflow.com/questions/9488029/…
रोब गिबन्स

43

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

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

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

जो भी आपको अधिक आरामदायक लगे, उसे चुनें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.