动态页面的开发,基本会涉及一个比较关键的问题,那就是传参。后台把不同的参数传递给前台,前台页面根据不同的参数显示不同的页面效果,这叫做渲染。
不同的后台开发环境均有不同的渲染方式,Node开发过程中,传递参数的方式非常简单直观。直接就是渲染模版即可,如下代码:
res.render('error', {
message: err.message,
error: err
});
渲染页面模版error
,给它传递了2个参数。这样前台页面模版就可以使用这两个参数了。如下error
页面代码:
<h1><%= message %></h1>
<h2><%= error.status %></h2>
<pre><%= error.stack %></pre>
当然页面上不仅仅只可以使用render方法传递的那几个参数,如果你使用的是express
框架的话,你还可以通过app.locals
以及res.locals
对象赋值的方式传递其他的参数到页面模版引擎。例如:
router.use(function (req, res, next) {
res.locals.period = moment().day(5).format('YYYYMMDD'); // 得到本周五的日期
res.locals.prePeriod = moment().day(5 - 7).format('YYYYMMDD'); // 得到上周五的日期
});
这个路由方法,会将period
以及prePeriod
两个变量传递到该路由下所有路径的模版引擎上。在该路由下的所有页面模版上均可以使用这两个变量。
但是,存在另外一种情况,页面跳转的时候,参数该什么传递呢?
页面的跳转,例如:res.redirect('/login')
,这条语句是把请求跳转到另外一个路径上;或者,res.redirect('back')
返回上一页。页面的跳转相当于重新访问一遍目标路径的路由。这种情况下,我们想传递参数,通过redirect
方法貌似不可以实现。可能有人会想到使用session
对象来作为一个中介进行传参,参数展现后就自动删除该条session
,没错,这就是connect-flash
模版所实现的功能。
具体可参考:
原理和使用方法都已经有了,我就不赘述了,我的使用场景一般都是当进入一个没有权限访问的页面时,跳转到登陆界面所提示信息的展现。好多场景其实是可以通过前台Ajax来取代的,例如:登陆界面的验证等等。
总结
Node Web开发中,后台三种传参渲染页面的方式:
普通页面渲染使用
res.render()
方法;还有别忘了
express
提供的app.locals
以及res.locals
对象;针对跳转页面的场景可以尝试使用
connect-flash
模块;
更多内容请访问:LP's Blog
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。