将Nunjucks与Node一起使用
试图找出以下问题的优雅解决方案。使用这样的目录树sorda:
app_dir
--app.js
--public
----stylesheets
------mystyles.css
--views
----page.html
----templates
------page_template.html
app.use(express.static(path.join(__dirname, 'public')));
将Nunjucks的根目录配置为视图
nunjucks.configure('views', {
autoescape: true,
express : app,
watch: true
});
当我从page_template.html中引用css文件时,nunjucks(我认为)会根据路由自动创建相对路径并覆盖静态行为。
例如,当我在page_template.html上使用/stylesheets/mystyles.css
路径但调用扩展它的文件时
/:publication/:page
路径,呈现的html为/:publication/:page/stylesheets/mystyle.css
我总是可以写一个快速的黑客,根据路线创建CSS和其他资源的相对路径,但这不是一个特别优雅的解决方案:(任何帮助非常感谢。
答案 0 :(得分:2)
当我从page_template.html中引用css文件时,nunjucks(我认为)会根据路由自动创建相对路径并覆盖静态行为。
我认为这是错误的。 Nunjucks不会产生任何路径
在任何文件夹(view
,view/templates
等)的模板中,您必须指定public dir
为root的文件名,例如
/stylesheets/mystyles.css
的{{1}}。
我使用%app%/public/stylesheets/mystyles.css
中的子文件夹来分组模板,例如view
(已存储的宏),/macros
(为我的应用存储了其他页面)。您也可以将它用于路由器,例如/tools
,/user/view.html
...