搜索
node.js - 关于nodejs+express+jade模板嵌套的疑问
大家讲道理
大家讲道理 2017-04-17 11:03:20
[Node.js讨论组]

已知并实现

  • jade支持通过extend和block来进行模板嵌套
  • express通过app.set('view engine', 'jade');来设定使用jade作为模板引擎
  • respose输出时使用res.reander('path/to/template.jade', {key:value});实现

代码(省略无关内容)

#layout.jade
doctype 5
html(lang="zh_CN")
  head
    title= title
  body
    section.content
      block content
    section.siteinfo
      block siteinfo
#page.jade,xxx.jade
extend layout

  block content
    p this is content  #每个页面的内容都不一样
  block siteinfo
    p this is my site info #全站一致,但是动态内容
#输出页面
exports.viewpage = function(req, res){
    var content = fs.readFileSync('path/to/file');
    var siteinfo = getSiteInfo(); #获取动态内容
    res.render('page', {content: content, siteinfo: siteinfo});
};

问题描述

content不同的页面类型的数据不一样,所以在不同的请求具体处理中具体输出是没用问题的。但是siteinfo的内容全站都是一样的,但是是动态内容(所以我不能直接写在模板里面),如果像上面一样在每个页面输出处理中去获取并传递siteinfo感觉非常多余,所以我希望通过app.all('*', applySiteinfo);这种方式来统一处理,同事不需要在res.render时做任何处理(就是也不通过res.set\res.get来传递数据),请问applySiteinfo中具体应该怎么处理?

已发现解决方法

  • 使用app.locals.relevant = applySiteinfo();,applySiteinfo函数中直接使用jade.renderFile返回相应的HTML代码

不知道有没有更好的方式?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
阿神
app.use(function (req, res, next) {
  res.locals.xxxx = "hahahahah"
  next()
})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号