Nunjucks渲染相对于被调用的路径的文件路径并覆盖express.static设置

时间:2016-07-24 05:32:05

标签: node.js express nunjucks

将Nunjucks与Node一起使用

试图找出以下问题的优雅解决方案。使用这样的目录树sorda: app_dir --app.js --public ----stylesheets ------mystyles.css --views ----page.html ----templates ------page_template.html

  1. 在我的公共目录中包含CSS等静态文件 app.use(express.static(path.join(__dirname, 'public')));
  2. 将Nunjucks的根目录配置为视图 nunjucks.configure('views', { autoescape: true, express : app, watch: true });

  3. 当我从page_template.html中引用css文件时,nunjucks(我认为)会根据路由自动创建相对路径并覆盖静态行为。

  4. 例如,当我在page_template.html上使用/stylesheets/mystyles.css路径但调用扩展它的文件时 /:publication/:page路径,呈现的html为/:publication/:page/stylesheets/mystyle.css

    我总是可以写一个快速的黑客,根据路线创建CSS和其他资源的相对路径,但这不是一个特别优雅的解决方案:(任何帮助非常感谢。

1 个答案:

答案 0 :(得分:2)

  

当我从page_template.html中引用css文件时,nunjucks(我认为)会根据路由自动创建相对路径并覆盖静态行为。

我认为这是错误的。 Nunjucks不会产生任何路径 在任何文件夹(viewview/templates等)的模板中,您必须指定public dir为root的文件名,例如 /stylesheets/mystyles.css的{​​{1}}。

我使用%app%/public/stylesheets/mystyles.css中的子文件夹来分组模板,例如view(已存储的宏),/macros(为我的应用存储了其他页面)。您也可以将它用于路由器,例如/tools/user/view.html ...