javascript - 如何在 Node 上的 .dust 文件上使用 connect-flash 和 express-messages 显示消息

标签 javascript node.js express dust.js kraken.js

我正在使用NodejsExpressjsKraken,我需要在索引上添加产品时显示消息,但我尝试了很多次用于配置,但消息仍然没有按我的预期出现。这是我的 config.js:

var flash = require('connect-flash');
app = module.exports = express();
app.use(kraken(options));
//flash
app.use(flash());
app.use(function (req, res, next) {
   res.locals.messages = require('express-messages')(req, res);
   next();
});

我的 Controller :

router.post('/somePath', function (req, res) {
//something to do to add
res.flash('messages','Add success!!')
res.render('path/index');
});

我的index.dust文件:

`{>"layouts/master" /} 
 {<body}
   {messages|s}
   // body goes here
 {/body}

`

最佳答案

你已经非常接近答案了。

这一行

   res.locals.messages = require('express-messages')(req, res);

messages 中存储一个函数,该函数将 Flash 消息输出为 html 片段。

res.locals 由express 与用于渲染模板的模型合并。

现在您只需要一种从dust 模板中调用此函数的方法。

这样做:

{messages|s}

实际上并不调用该函数。您需要像调用上下文助手一样调用它:

{#messages /}

您还有最后一个障碍需要清除。 express-messages 期望的函数签名与dust 提供的不同,因此您必须将其包装在辅助函数中(在您的 server.js 文件中):

app.use(flash());
app.use(function (req, res, next) {
    var messages = require('express-messages')(req, res);
    res.locals.messages = function (chunk, context, bodies, params) {
        return chunk.write(messages());
    };
    next();
});

关于javascript - 如何在 Node 上的 .dust 文件上使用 connect-flash 和 express-messages 显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39829177/

相关文章:

javascript - 如何从网页调用 exe(HTML、JavaScript)

javascript - 使用 jquery/php 在 mysql 中进行内联更新

node.js - 在nodejs中使用cron与redlock和集群

javascript - 错误: "ReferenceError: promise is not defined" adding promise to my code

java - 使用 express 和 multer 将带有 Java MultipartEntity 的图像上传到 Node.js 服务器

node.js - 当我尝试对服务器进行 AJAX 调用时,某些网络超时

node.js - TypeError : app. 地址不是函数

javascript - 在 Javascript 中从 SVG 对象中提取所有行

javascript - Jquery UI 自动完成列表不刷新

node.js - 错误 : Could not locate bindings file node-librdkafka. Node