node.jspugmanifest.cache

Jade-lang add manifest file


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!


Solution

  • 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