express中使用 connect-flash 及其源码研究

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了express中使用 connect-flash 及其源码研究相关的知识,希望对你有一定的参考价值。

刚开始摸node.js, 在用express 4.x 的过程中 有一个connect-flash的玩意 

技术分享

如上图, 在 /reg 页面提交注册信息的时候 如若两次输入的密码不匹配则调用请求对象reqflash方法写入提示消息; 然后 在展示 /reg 页面的时候取出抛给视图模版; 看起来就像个字典对象

这个包必须在引用 express-session 包的前提下才能使用 why1 ,并且写入的值 在取出一次后即销毁 why2。 这非常像asp.net mvc里边的 tempdata对象

 

开源的东西好处就是随时看源码~~~

技术分享

从 var msgs = this.session.flash = this.session.flash || {}; 这边很容易看出 flash 其实就是存储在session中的一个对象的键名;

然后根据传入参数的个数做不同的处理:

  why1 .  当传入参数为2个或多个的时候,session将会有 {"flash":{key:value}  这样的对象,key就是传入的type,  value可能是字符串,数组或者 格式化字符串;

  why2 .  当只传参数type的时候, 就是从session中取出flash对象的相应的value, 并且移除 delete msgs[type];

 

ps:    flash英文解释是:闪光   我理解成一瞬间显示就消失的东西, 非常符合这里的编写意图,  不过个人觉得要是包名改成“session-flash”会更好 :)

 

以上是关于express中使用 connect-flash 及其源码研究的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS:Express 3.0 with connect-flash(按照护照本地策略中的建议),仍然发现 req.flash 异常

express子页面全报错

connect-flash 中间件不显示消息

错误:req.flash() 需要会话

express中使用ejs

express中使用express-session记录登陆状态