Jade-lang add manifest file

2019-08-19 11:51发布

问题:

I would like to know how to add the manifest file to node.js site with jade-lang and express. I found this as an issue 239 in github. My question is how can I add some data into the buffer without while we wait for the resolution of the issue.

Thank's!

回答1:

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


回答2:

There's a simple way to do this in jade: Just try this

html(manifest=_condition_ ? "cache.manifest" : undefined)

This code checks if condition is true. If it is, manifest is set to "cache.manifest". Otherwise it'll be set to undefined and dropped.