Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – ExpressJS 3.0如何将res.locals传递给玉视图?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在用户登录失败后显示一条Flash消息,但是我无法将变量显示在我的Jade视图中。

我有一些作品,我知道我必须在我的app.configure()中使用这个:

app.use (req,res,next) ->
      res.locals.session = req.session

并且我将在用户POSTS错误的密码之后设置闪光灯信息:

exports.postSession = (req,res) ->
       users = require '../DB/users'
       users.authenticate(req.body.login,req.body.password,(user) ->
       if(user)
         req.session.user = user
         res.redirect(req.body.redirect || '/')
       else
         req.session.flash = 'Authentication Failure!'
         res.render('sessions/new',{title:'New',redirect: req.body.redirect })
      )

我不知道如何在我的Jade文件中访问res.locals.session。我怀疑我正在设置一切正确。这个问题很像这样一个Migrating Express.js 2 to 3,specifically app.dynamicHelpers() to app.locals.use?,但我仍然无法让它工作。如果有人可以向我显示一个在res.local中设置值并在视图中访问它们的简单示例,那将是非常感激的。

附:我知道连接闪存,但我需要了解如何使视图中的东西可用。

这是我的应用程序:

app.configure(() -> 
  app.set('views',__dirname + '/views')
  app.set('view engine','jade')
  app.use(express.bodyParser())
  app.engine('.jade',require('jade').__express)
  app.use(express.methodOverride())
  app.use(express.cookieParser())
  app.use(express.session({ store: new express.session.MemoryStore({reapInterval: 50000 * 10}),secret: 'chubby bunny' }))
  app.use(express.static(__dirname + '/public'))
  app.use((req,next) ->
    res.locals.session = req.session
    next()
  )
  app.use(app.router)
)

解决方法

只是给每个有相同问题的人简短的总结,并得到解决改变res.redirect的印象。

把app.use中间件放在app.router之前是非常重要的。见快递作者TJ Holowaychuck的评论

> https://groups.google.com/d/msg/express-js/72WPl2UKA2Q/dEndrRj6uhgJ

这里是一个使用express v3.0.0rc4的全新安装的例子

app.js:

app.use(function(req,next){
  res.locals.variable = "some content";
  next();
})

app.configure(function(){
  app.set('port',process.env.PORT || 3000);
  app.set('views',__dirname + '/views');
  app.set('view engine','jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname,'public')));
});

index.jade:

extends layout

block content
  h1= title
  p Welcome to #{title}
  p= variable

大佬总结

以上是大佬教程为你收集整理的node.js – ExpressJS 3.0如何将res.locals传递给玉视图?全部内容,希望文章能够帮你解决node.js – ExpressJS 3.0如何将res.locals传递给玉视图?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: