EJS এ এইচটিএমএল হিসাবে একটি পরিবর্তনশীল রেন্ডার করুন


99

আমি নোড.জেএস ( ফর্মস ) এর জন্য ফর্ম লাইব্রেরি ব্যবহার করছি , যা আমার জন্য ফর্মটি ব্যাকএন্ডে রেন্ডার করবে:

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();এইচটিএমএল-এর একটি ব্লক তৈরি করে যা দেখতে এরকম দেখায়:

<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>

মূলত এইচটিএমএলের একটি দীর্ঘ স্ট্রিং। আমি তখন নিম্নলিখিত কোডটি ব্যবহার করে ইজেএস এবং এক্সপ্রেস ব্যবহার করে এটি রেন্ডার করার চেষ্টা করি:

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

এইচটিএমএল রেন্ডারিংয়ের উপর কেবল সত্যিকারের এইচটিএমএলটির চেয়ে আমি উপরে যে স্ট্রিং পোস্ট করেছি তা হ'ল (এবং এভাবে আমি চাই এমন একটি ফর্ম)। EJS ব্যবহার করে সেই স্ট্রিংটিকে প্রকৃত HTML হিসাবে রেন্ডার করার কোনও উপায় আছে কি? নাকি জাদের মতো কিছু ব্যবহার করতে হবে?

উত্তর:


305

ইজেএসের সাহায্যে আপনার বেশ কয়েকটি ট্যাগ থাকতে পারে:

    <% code %>

... যা কোড যা মূল্যায়ন করা হয় তবে মুদ্রিত হয় না।

    <%= code %>

... যা কোড যা মূল্যায়ন করা হয় এবং মুদ্রিত হয় (পালিয়ে যায়)।

    <%- code %>

... যা কোড যা মূল্যায়ন করা হয় এবং মুদ্রিত হয় (পালানো হয় না)।

যেহেতু আপনি আপনার পরিবর্তনশীল মুদ্রণ করতে চান এবং এটি থেকে বাঁচতে চান না, তাই আপনার কোডটি সর্বশেষ প্রকার (এর সাথে <%-) হবে। আপনার ক্ষেত্রে:

    <%- my_form_content %>

আরও ট্যাগের জন্য, সম্পূর্ণ ইজেএস ডকুমেন্টেশন দেখুন



আমি এই পোস্টটি না পাওয়া পর্যন্ত কীভাবে এটি করতে হবে তা নির্ধারণের জন্য কয়েক ঘন্টা ব্যয় করেছেন। অনেক ধন্যবাদ !!!
স্যাম

ভাল, আপনি আমার দিন বাঁচিয়েছেন।
আফশিন মেহরাবানি

এখানে জিজ্ঞাসা করা সঠিক মডিউলটি ব্যবহার করছিল। খুব সুন্দর ভাগ্যবান :) ধন্যবাদ
মজিদারিফ

"(উল্টা কমা) চরিত্রটি পালানোর জন্য কী ব্যবহার করা যেতে পারে?
ভিক্টর

17

অক্টোবর 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 দিয়ে আপনি আরও কিছু করতে পারেন। তুমি ব্যবহার করতে পার:

  • এস্কেপড আউটপুট <%= %>(এস্কেপ ফাংশন কনফিগারযোগ্য)
  • এর সাথে আনস্কেপড কাঁচা আউটপুট <%- %>
  • -%>শেষের ট্যাগ সহ নিউলাইন-ট্রিম মোড ('নিউলাইন স্লারপিং')
  • নিয়ন্ত্রণ প্রবাহের জন্য হোয়াইটস্পেস-ট্রিম মোড (সমস্ত সাদা স্থান স্লার্প) <%_ _%>
  • সাথে নিয়ন্ত্রণ প্রবাহ <% %>

সুতরাং, আপনার ক্ষেত্রে এটি হতে চলেছে <%- variable %>যেখানে variableকিছু মত

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

আমি আশা করি এটা কারো সাহায্যে লাগবে. 🙂


3

আমার ডাটাবেসে এইচটিএমএল হিসাবে সংরক্ষিত উইসইভিগ সম্পাদক থেকে টেক্সারিয়া ইনপুটটি রেন্ডার করার ক্ষেত্রে আমার একই সমস্যা ছিল। ব্রাউজারটি এটি রেন্ডার করবে না তবে পাঠ্য হিসাবে এইচটিএমএল প্রদর্শিত হবে। কয়েক ঘন্টা অনুসন্ধানের পরে, আমি খুঁজে পেলাম

<%= data %> ডেটা পালাতে গিয়ে

<%- data %>বাম ডেটা 'কাঁচা' (অপরিশোধিত) এবং ব্রাউজার এখন এটি রেন্ডার করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.