EJS में HTML के रूप में एक चर प्रस्तुत करना


97

मैं Node.js ( फ़ॉर्म ) के लिए फ़ॉर्म लाइब्रेरी का उपयोग कर रहा हूं , जो मेरे लिए बैकएंड पर एक फॉर्म प्रस्तुत करेगा:

var signup_form = forms.create({
    username: fields.string({required: true})
    , password: fields.password({required: true})
    , confirm:  fields.password({
        required: true
        , validators: [validators.matchField('password')]
    })
    , email: fields.email()
});
var signup_form_as_html = signup_form.toHTML();

अंतिम पंक्ति var signup_var signup_form_as_html = signup_form.toHTML();HTML का एक ब्लॉक बनाती है जो इस तरह दिखता है:

<div class="field required"><label for="id_username">Username</label><input type="text" name="username" id="id_username" /></div><div class="field required"><label for="id_password">Password</label><input type="password" name="password" id="id_password" /></div><div class="field required"><label for="id_confirm">Confirm</label><input type="password" name="confirm" id="id_confirm" /></div><div class="field"><label for="id_email">Email</label><input type="text" name="email" id="id_email" /></div>

मूल रूप से HTML का सिर्फ एक लंबा तार। फिर मैं निम्नलिखित कोड का उपयोग करके ईजेएस और एक्सप्रेस का उपयोग करके इसे प्रस्तुत करने का प्रयास करता हूं:

res.render('signup.ejs', {
    session: loginStatus(req)
    , form: signup_form_as_html
});

लेकिन HTML को रेंडर करने पर केवल वह स्ट्रिंग होती है जो मैंने वास्तविक HTML (और इस प्रकार जैसा मैं चाहता हूं) के बजाय ऊपर पोस्ट की है। क्या EJS का उपयोग करके उस स्ट्रिंग को वास्तविक HTML के रूप में प्रस्तुत करने का कोई तरीका है? या मुझे जेड जैसी कोई चीज़ इस्तेमाल करनी पड़ेगी?

जवाबों:


294

EJS के साथ आपके कई टैग हो सकते हैं:

<% code %>

... कौन सा कोड है जिसका मूल्यांकन किया गया है लेकिन प्रिंट नहीं किया गया है।

<%= code %>

... कौन सा कोड है जिसका मूल्यांकन किया गया है और उसका प्रिंट आउट लिया गया है (बच गया)।

<%- code %>

... कौन सा कोड है जिसका मूल्यांकन किया जाता है और उसका प्रिंट आउट निकाला जाता है (बच नहीं जाता है)।

चूँकि आप अपने वैरिएबल को प्रिंट करना चाहते हैं और उससे बचना नहीं चाहते हैं, आपका कोड अंतिम प्रकार ( <%-) के साथ होगा । आपके मामले में:

<%- my_form_content %>

अधिक टैग के लिए, पूर्ण EJS प्रलेखन देखें


7
प्रॉप्स ड्यूड ब्रावो जिसने मेरी समस्या को तुरंत ठीक कर दिया
cbsm1th

जब तक मुझे यह पोस्ट नहीं मिला, तब तक यह पता लगाने में कि मुझे क्या करना है। बहुत बहुत धन्यवाद !!!
सैम

अच्छा, आपने मेरा दिन बचा लिया।
अफशीन मेहरबानी

यहां पूछे गए सटीक मॉड्यूल का उपयोग कर रहा था। तो बहुत भाग्यशाली :) धन्यवाद
माजिदरीफ

भागने के लिए भी क्या इस्तेमाल किया जा सकता है "(उलटा अल्पविराम) चरित्र?
विक्टर

15

अक्टूबर 2017 अपडेट

नई EJS (v2, v2.5.7) विकास यहाँ क्या हो रहा है: https://github.com/mde/ejs वर्ष EJS (v0.5.x, 0.8.5, v1.0.0) यहाँ उपलब्ध है https: / /github.com/tj/ejs

अब ejs के साथ आप और भी अधिक कर सकते हैं। आप उपयोग कर सकते हैं:

  • के साथ बच गए उत्पादन <%= %>(बच समारोह विन्यास)
  • के साथ Unescaped कच्चे उत्पादन <%- %>
  • एंडलाइन -%>टैग के साथ न्यूलाइन-ट्रिम मोड ('न्यूलाइन स्लरपिंग')
  • नियंत्रण प्रवाह के लिए व्हॉट्सएप-ट्रिम मोड (सभी व्हाट्सएप को घिसना) <%_ _%>
  • नियंत्रण प्रवाह के साथ <% %>

तो, आपके मामले में यह होने जा रहा है <%- variable %>जहां variableकुछ ऐसा है

var variable = "text here <br> and some more text here";

मुझे उम्मीद है इससे किसी को सहायता मिलेगी। 🙂


3

मैं अपने डेटाबेस में html के रूप में सहेजे गए wysiwyg संपादक से textarea इनपुट प्रदान करने के साथ एक ही मुद्दा था। ब्राउज़र इसे रेंडर नहीं करेगा लेकिन HTML को टेक्स्ट के रूप में प्रदर्शित करेगा। घंटों खोजबीन करने के बाद पता चला

<%= data %> जबकि डेटा बच गया

<%- data %>बाएँ डेटा 'रॉ' (अनसैप्ड) और ब्राउज़र अब इसे रेंडर कर सकता है।

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