質問

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!

役に立ちましたか?

解決

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

他のヒント

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.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top