如何在EJS中使用req.flash()?

6 javascript ejs node.js express flash-message

我希望能够使用Express和EJS向客户端发送消息.我看了一遍,但仍然找不到示例或教程.有人能告诉我闪烁消息的最简单方法吗?

谢谢!

Poi*_*Oak 6

我知道这是一个老问题,但我最近在尝试自己理解flash消息和模板时碰到了它,所以我希望这能帮助我处理其他人.考虑到Express 4,express-flash模块和ejs模板的情况,这里有2条路线和一个可以帮助您入门的模板.

首先生成要显示的Flash消息.这里的app.all()方法映射到/express-flash.请求在重定向到之前baseurl/express-flash使用req.flash(type, message)setter方法创建消息baseurl/.

app.all('/express-flash', req, res ) {
  req.flash('success', 'This is a flash message using the express-flash module.');
  res.redirect(301, '/');
}
Run Code Online (Sandbox Code Playgroud)

接下来,将消息映射到res.render()目标路径方法中的模板baseurl/.这里req.flash(type)getter方法返回与类型匹配的消息success,这些消息映射到模板变量expressFlash.

app.get('/', req, res ) {
  res.render('index', {expressFlash: req.flash('success') });
}
Run Code Online (Sandbox Code Playgroud)

最后,显示expressFlash(如果存在)的值index.ejs.

<p> Express-Flash Demo </p>    
<% if ( expressFlash.length > 0 ) { %>
  <p>Message: <%= expressFlash %> </p>
<% } %>
Run Code Online (Sandbox Code Playgroud)

然后启动服务器并访问baseurl/express-flash.它应该触发重定向到baseurl/flash消息.现在刷新baseurl/并看到消息消失.


Flo*_*ine 4

<% if ( message ) { %>
    <div class="flash"><%= message %></div>
<% } %>
Run Code Online (Sandbox Code Playgroud)

这是你想要的吗?你可以使用一些客户端JS让它淡出。jQuery 示例:

var message = $( '.message' );
if ( message.length ) {
    setTimeout( function() {
        message.fadeOut( 'slow' );
    }, 5000 );
}
Run Code Online (Sandbox Code Playgroud)