快速,检查模板是否存在

edA*_*a-y 5 node.js express

有没有办法可以判断快递中是否存在给定的模板?基本上我想创建特定的和后备模板,但不希望在模板本身中包含该逻辑.

if( res.templateExists( 'specific_page' ) ) {
  res.render( 'specific_page' );
} else {
  res.render( 'generic_page' );
}
Run Code Online (Sandbox Code Playgroud)

specific_page名称在基于用户的设备上运行时,语言等generatead

注意:我不需要知道如何在模板中进行字符串本地化,这是我已经拥有的.我正在寻找整个布局/模板发生变化的情况.

rob*_*lep 8

你可以用这个:

res.render('specific_page', function(err, html) {
  if (err) {
    if (err.message.indexOf('Failed to lookup view') !== -1) {
      return res.render('generic_page');
    }
    throw err;
  }
  res.send(html);
});
Run Code Online (Sandbox Code Playgroud)

这将区分抛出的错误,因为找不到模板(在这种情况下它将呈现generic_page),以及可能发生的任何其他错误(重新抛出).它并不完全稳定,因为它依赖于抛出的错误消息,但我认为还没有其他方法可以确定错误的类型.

  • @trss您可以使用`fs.exists(app.get('views')+'/ your / template',...)`或类似的东西 (2认同)