I'm going to need this in one of my projects soon, so I was curious to give it a try. There is effectively a problem if you try to do it in a single file:
!!! 5
if useManifest
html(lang="en", manifest="cache.manifest")
else
html(lang="en")
head
title sample title
body
p some content...
This renders a messed up HTML. However, the following seems to work just fine (it's definitely a workaround):
In routes\index.js
:
exports.index = function(req, res){
res.render('testJade', { layout: false, useManifest: true })
};
In views\testJadeInclude.jade
:
!!!5
if useManifest
html(lang="en", manifest="cache.manifest")
block content
else
html(lang="en")
block content
And finally, in views\testJade.jade
:
include testJadeInclude
block append content
head
title sample title
body
p some content
Then based on whatever you wish (such as if the client is a mobile browser, or whatever), you set useManifest to true or false.
And I just tested another possibility, which is kind of the other way around. Instead of including the doctype and html tag in your content file (via a block append), you include the content file in the doctype-html file, so it looks like this:
!!! 5
if useManifest
html(lang="en", manifest="cache.manifest")
include contentFile
else
html(lang="en")
include contentFile