7

Express と EJS を使用してクライアントにメッセージをフラッシュできるようにしたいと考えています。私はすべてを見てきましたが、まだ例やチュートリアルが見つかりません。メッセージをフラッシュする最も簡単な方法を誰か教えてくれませんか?

ありがとう!

4

5 に答える 5

4
<% if ( message ) { %>
    <div class="flash"><%= message %></div>
<% } %>

これは、あなたの望むことですか?クライアント側の JS を使用してフェードアウトさせることができます。jQuery の例:

var message = $( '.message' );
if ( message.length ) {
    setTimeout( function() {
        message.fadeOut( 'slow' );
    }, 5000 );
}
于 2012-06-25T18:23:45.090 に答える
2

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');が追加されることに注意してください。testinfo req

このメカニズムは非常に弱いことに注意してください。たとえば、ユーザーがリンクをダブルクリックすると (2 つのリクエストがサーバーに送信されます)、最初の呼び出しでキューが空になるため (もちろん、リクエストがメッセージを生成しない限り)、メッセージは表示されません。

于 2012-06-25T18:36:20.497 に答える
0

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');
于 2012-06-29T05:39:05.590 に答える