前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NodeJS+Express中集成Flash消息

NodeJS+Express中集成Flash消息

作者头像
飞奔去旅行
发布2019-06-13 14:09:48
1.2K0
发布2019-06-13 14:09:48
举报
文章被收录于专栏:智慧协同智慧协同

中间件: connect-flash 地址:https://github.com/jaredhanson/connect-flash

flash消息用于重定向跳转时传递消息,在Express中集成方法如下:

在项目中集成

  1. 安装connect-flash中间件
代码语言:javascript
复制
npm install --save connect-flash
  1. 在main js 中引入(通常是app.js或者项目名.js文件)中间件并加载
代码语言:javascript
复制
var flash = require('connect-flash');
app.use(flash());

到这里,我们的集成工作已经完成,就可以在router中使用类似 req.flash('flash_success_message', '文章添加成功!'); 传递flash消息了! 下面教大家如何完整定义一套flash message前后端解决方案

在项目中使用

一套完整的flash解决方案我的理解是: 后端发送flash message,前端动态响应flash message一次。 为什么说是“一次”呢?举个栗子: 当我们开发删除数据功能时,通常会这么做:点击删除按钮,将数据ID传递到后端,后端通过id,将数据从数据库里删除,并重定向redirect到数据列表页,重定向的时候,我们可以发送一条flash message,告诉用户数据删除成功。这个时候,当我们再次刷新数据列表页时,将不会出现之前那条flash message

下面我们开始处理整套flash message流程:

  1. 在main js(通常是app.js或者项目名.js文件)中所有的路由的最上面加入flash message处理中间件:
代码语言:javascript
复制
app.use(function (req, res, next) {
    res.locals.flash_success_message = req.flash('flash_success_message'); 
    res.locals.flash_error_message = req.flash('flash_error_message');        
    next();
});

一定要放到所有路由的最上面,因为express处理请求是由上往下,这样可以将所有的请求都过滤一遍。

  1. 在页面中统一处理 我用的是express-handlebarsbootstrap,所以处理方式如下:
代码语言:javascript
复制
{{#if flash_success_error}}
    <div class="alert alert-danger alert-dismissible" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <strong>错误!</strong> {{flash_success_error}}.
    </div>
{{/if}}
{{#if flash_success_message}}
    <div class="alert alert-success alert-dismissible" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <strong>恭喜!</strong> {{flash_success_message}}.
    </div>
{{/if}}

具体意思就是:前端视图中动态判断中间件中定义的flash_success_errorflash_success_message两个变量,如果有值,就将其对应的内容渲染处理。

至此,整个开发过程完毕。

有兴趣的童鞋可以关注一下我的开源项目ANodeBlog了解更多内容!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.01.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在项目中集成
  • 在项目中使用
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档