Node.jsのフォームライブラリ( Forms )を使用しています。これにより、バックエンドでフォームがレンダリングされます。
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の長い文字列です。次に、次のコードを使用してEJSとExpressを使用してレンダリングを試みます。
res.render('signup.ejs', {
session: loginStatus(req)
, form: signup_form_as_html
});
しかし、HTMLのレンダリングでは、実際のHTML(したがって、希望どおりのフォーム)ではなく、上に投稿した単なる文字列です。その文字列をEJSを使用して実際のHTMLとしてレンダリングする方法はありますか?または、Jadeのようなものを使用する必要がありますか?
Ejsを使用すると、
<% code %>
...これは評価されるが印刷されないコードです。
<%= code %>
...これは、評価および印刷(エスケープ)されるコードです。
<%- code %>
...これは評価され、出力される(エスケープされない)コードです。
変数を出力し、エスケープしたくないので、コードは最後の型(-<%
付き)になります。あなたの場合:
<%- my_form_content %>
詳細については、 完全なejsドキュメント を参照してください
new 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を使用すると、さらに多くのことができます。次を使用できます。
<%= %>
でエスケープされた出力(エスケープ機能を構成可能)<%- %>
を使用したエスケープされていない生出力-%>
終了タグを使用した改行トリムモード( 'newline slurping')<%_ _%>
を使用した制御フローのホワイトスペーストリムモード(すべてのホワイトスペースを丸lurみ)<% %>
を使用した制御フローそのため、あなたの場合は<%- variable %>
になります。ここでvariable
は次のようなものです
var variable = "text here <br> and some more text here";
これが誰かの助けになることを願っています。 ????
データベースにhtmlとして保存されたwysiwygエディターからのtextarea入力のレンダリングで同じ問題がありました。ブラウザはレンダリングしませんが、htmlをテキストとして表示します。何時間も検索した後、私は見つけました
<%= data %>
はデータをエスケープしました
<%- data %>
leftデータは「生」(エスケープされていない)であり、ブラウザはそれをレンダリングできるようになりました。