express layout模板视图
发布于 2个月前 作者 vendetta0114 356 次浏览 来自 问答

express框架使用了layout.html模板(ejs引擎), 例如在进行网站首页展示时采用

res.render(‘index’,{ layout:’layout.html’, title:’首页’ });

在渲染用户中心时采用

res.render(‘user’,{ layout:’layout.html’, title:’个人中心’ });

layout.html内容结构如下

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="renderer" content="webkit"> <title><%= title%></title> <link href="/public/stylesheets/index.css" rel="stylesheet"></head> <body>
<%- body %>

现在问题是,每个页面都使用layout.html模板,但不同的页面加载的css和js各不相同; index加载了index.css, index.js; 在加载首页时,layout引用了index.css 当加载user页面时user.css如何引入到视图中?或者其他方式解决? nodeclub代码layout文件加载了所有静态文件,不可能每个页面都会用到吧? 还请社区前辈帮助解答,谢谢!

6 回复

创建include目录,把公用的放到一起,然后在布局里include a.header.jade or include a.js.header.jade 类似变通

@i5ting 感谢你的回答,还是有点模糊;layout文件只有1个,是不是在渲染不同的视图时候,还要判断是什么视图文件,然后再去引用对应的:include a.header.jade ? 类似 在layout内部使用 if 当前视图为user include user.header.ejs if 当前视图为index include index.header.ejs

@vendetta0114 layout可以多个的,比如首页一个,文章正文一个,凡是布局上有差异的可能都会有一个

我比较喜欢用 swig

@jerrywu55 感谢你的推荐,简单看了一下swig,模板继承挺好,另外还有其他特性,感谢

@vendetta0114 嗯 filter 和 custom tags 我很喜欢

回到顶部