express中使用 connect-flash 及其源码研究
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了express中使用 connect-flash 及其源码研究相关的知识,希望对你有一定的参考价值。
刚开始摸node.js, 在用express 4.x 的过程中 有一个connect-flash的玩意
如上图, 在 /reg 页面提交注册信息的时候 如若两次输入的密码不匹配则调用请求对象req的flash方法写入提示消息; 然后 在展示 /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 异常