Express と EJS を使用してクライアントにメッセージをフラッシュできるようにしたいと考えています。私はすべてを見てきましたが、まだ例やチュートリアルが見つかりません。メッセージをフラッシュする最も簡単な方法を誰か教えてくれませんか?
ありがとう!
Express と EJS を使用してクライアントにメッセージをフラッシュできるようにしたいと考えています。私はすべてを見てきましたが、まだ例やチュートリアルが見つかりません。メッセージをフラッシュする最も簡単な方法を誰か教えてくれませんか?
ありがとう!
<% if ( message ) { %>
<div class="flash"><%= message %></div>
<% } %>
これは、あなたの望むことですか?クライアント側の JS を使用してフェードアウトさせることができます。jQuery の例:
var message = $( '.message' );
if ( message.length ) {
setTimeout( function() {
message.fadeOut( 'slow' );
}, 5000 );
}
req.flash()
2通りの使い方ができます。
2 つの引数を使用する場合
req.flash(type, message);
ここtype
で、 はメッセージのタイプで、message
は実際のメッセージ (どちらも文字列) でmessage
あり、 type のキューに追加されますtype
。1 つの引数で使用する
req.flash(type);
タイプのすべてのメッセージの配列を返しtype
、キューを空にします。さらに、このメソッドはセッションに関連付けられているため、セッションごとに機能します。つまり、各ユーザーには独自のフラッシュ キューのセットがあります。したがって、あなたの見解では、次のようなことができます:
var messages = req.flash('info');
次に、変数をテンプレートに送信し、そこで使用します(これは配列であり、反復できることにmessages
注意してください)。messages
を使用すると、(オブジェクトに関連付けられた) 現在のユーザーに対してのみタイプのメッセージreq.flash('info', 'test');
が追加されることに注意してください。test
info
req
このメカニズムは非常に弱いことに注意してください。たとえば、ユーザーがリンクをダブルクリックすると (2 つのリクエストがサーバーに送信されます)、最初の呼び出しでキューが空になるため (もちろん、リクエストがメッセージを生成しない限り)、メッセージは表示されません。
visionmedia の express-messages ヘルパー モジュールを使用すると、非常に簡単になります。Github リンク
モジュールのドキュメントにあるように:
npmでモジュールをインストール
npm install express-messages
次に、app.config でメッセージの動的ヘルパーを割り当てます。
app.dynamicHelpers({ messages: require('express-messages') });
EJS ファイルで、メッセージが必要な場所に次を挿入します。
<%- messages() %>
EJS はこれを次のようにレンダリングします。
<div id="messages">
<ul class="info">
<li>Email queued</li>
<li>Email sent</li>
</ul>
<ul class="error">
<li>Email delivery failed</li>
</ul>
</div>
(もちろん、モジュールのコードでレンダリングするものを変更できます)
次に、実際にメッセージをフラッシュするには、次の呼び出しを含めます。
req.flash('info', 'Your message goes here');