code: function renderView(req,res,afterRender) {
      var view;
  
      if(!req.input||req.input.error) {
  
          //如果页面加载，是错误信息页面
          res.proxyData = res.proxyData?res.proxyData:{};
          res.proxyData.reloadUrl = req.url;
          res.proxyData.message = req.input ? req.input.message : '';
          view = 'error/error';
          req.app.yolog.log('error','error view:',res.proxyData);
      } else { 
  
          //获取视图
          view = req.input.config.view || getView(req.input.config.route);
      }
  
      //设置VO
      res.locals = res.proxyData;
      debug('res.proxyData:');
      debug(res.proxyData);
      //如果是pjax，不组装布局
      if (req.headers['x-pjax']) {
          res.locals.layout = false;
      } else {
          delete res.locals.layout;
      }    
  
      debug('view:'+ view);
      req.app.yolog.log('verbose','view %s | pjax vo: %j',view,res.proxyData);
      //渲染HTML
      res.render(view,function(err,str) {
  
          //错误处理
          if(err) {
              req.next(err);
              return;
          }
  
          debug('view_html');
  
          //在发送渲染结果前的一些操作
          if(afterRender) {
              str = afterRender(res,str);
          }
  
          debug('after view_html');
  
          //发送渲染结果
          res.send(str);
          return;
      });
  }
docs: 渲染视图
  @param  {Object} req 参数输入
  @param  {Object} res   响应
  @param {function} afterRender 在渲染前的操作
  @return {void}