标签:
req.flash()官方建议: req.session.messages = [‘foo‘] ,有相似的效果
app.error()。官方叫:(err, req, res, next)这样用。
req.isXMLHttpRequest (现在用的 req.xhr )
res.local(foo, bar) (用 res.locals.foo = bar 或者 res.locals({ foo: bar }) 替换了)
app.dynamicHelpers() 现在这样用:use middleware + res.locals)
app.helpers() (用 app.locals)
partial()被弃用
req.header(field[, defaultValue])被req.get(field)替换了
express.createServer()简化成express()
app.register() 改了名字,叫 app.engine()
1.安装express-partials。
方法一:运行cmd用npm install express-partials
方法二:在package.json里面的dependencies添加"express-partials": "*"。然后运行cmd并切换至项目目录运行npm install获得最新版。
2.app.js里面引用express-partials。
步骤一:添加引用var partials = require(‘express-partials‘);
步骤二:在app.set(‘view engine‘, ‘ejs‘);下面添加app.use(partials());
3.在需要引用模板的地方调用layout:‘模版名称‘
示例
app.get(‘/reg‘, function (req, res) { res.render(‘reg‘, { title: ‘用户注册‘, layout: ‘template‘ }); });
1、 官方解释
https://github.com/jaredhanson/connect-flash
falsh以键值形式包装的数据存本质是放在session中的。所以,首先要向以往一样设置cookies和session,然后再使用connect-flash提供的flash中间件。
var flash = require(‘connect-flash‘); var app = express(); app.configure(function() { app.use(express.cookieParser(‘keyboard cat‘)); app.use(express.session({ cookie: { maxAge: 60000 }})); app.use(flash()); });
然后,在程序里面就可以使用flash,来包裹信息了。
然后,在程序里面就可以使用flash,来包裹信息了。
app.get(‘/flash‘, function(req, res){ // Set a flash message by passing the key, followed by the value, to req.flash(). req.flash(‘info‘, ‘Flash is back!‘) res.redirect(‘/‘); }); app.get(‘/‘, function(req, res){ // Get an array of flash messages by passing the key to req.flash() res.render(‘index‘, { messages: req.flash(‘info‘) }); });
这样做的话,每个action里面都需要设置一遍,对于某些共有的消息(比如:error消息…),可以设置成全局的,不需要在每个action都去指明:
/**把变量和运算分开,这样很重要**/ app.use(function(req, res, next) { var error = req.flash(‘error‘); res.locals.error = error.length ? error:null; var success = req.flash(‘success‘); res.locals.success = success.length ? success:null; res.locals.user = req.session ? req.session.user : null; next();//因为node是单线程的,所以当前事件处理完毕,转交给下面的事件继续执行 });
注意:上面的
var error = req.flash(‘error‘); res.locals.error = error.length ? error:null;
不能改成这样:
res.locals.error = req.flash(‘error‘).length ? req.flash(‘error‘):null;
这是因为:
Falsh保存的变量只会在下一次请求中被访问到,所以,上面的三目运算在赋值时,已经为空了!!!
标签:
原文地址:http://www.cnblogs.com/surahe/p/4287782.html