Sails.js、Nunjucks 和 LiveReload

Sails.js, Nunjucks & LiveReload

我已经设法让 Nunjucks 与 Sails.js 一起工作,但是似乎在我重新启动服务器之前,更改不会被提取。我会自动看到一两次反映的变化,但在那之后,即使手动刷新浏览器也不会显示我的变化。

我根据此处的建议实现了 LiveReload:

但我不怀疑这是 LiveReload 的问题。

有没有人让 Sails.js 和 Nunjucks 一起玩得很好?如果可以,怎么做?

问题出在 nunjucks 本身。它有一个 watch 选项,默认情况下设置为 false:

您可以在 sails/config/bootstrap.js 中启用它:

var nunjucks = require('nunjucks')
 module.exports.bootstrap = function(cb) {

    nunjucks.configure({
    watch:true
  })
  // It's very important to trigger this callback method when you are finished
  // with the bootstrap!  (otherwise your server will never lift, since it's waiting on the bootstrap)
  cb();
};

结合 一切正常。

在/config/views.js

  engine: {
          ext: 'html',
          fn: function (str, options, fn) {
              var engine = require('nunjucks');
                  engine.configure('views', {
                    autoescape       : true,
                    throwOnUndefined : true,
                    trimBlocks       : true,
                    lstripBlocks     : true,
                    express          : sails.hooks.http.app,
                    watch            : true,
                    noCache          : false,
                    web              : {
                          useCache : true,
                          async    : false
                    }
              });
              engine.render(str, options, fn);
          }
      },

对于Sails.js 1,解决方案略有变化:

在/config/views.js

module.exports.views = {
    ...
    getRenderFn: () => {
      // Import nunjucks.
      const nunjucks = require('nunjucks');

      // Configure nunjucks.
      const env = nunjucks.configure('views', {
        autoescape       : false,
        throwOnUndefined : true,
        trimBlocks       : true,
        lstripBlocks     : true,
        watch            : true,
        noCache          : false,
        web              : {
          useCache : true,
          async    : false
        }
      });

      // Here you can add filter
      env.addFilter('filtername', (name) => {
        return name;
      });

      return nunjucks.render;
    }
}

希望这会对某人有所帮助 ;)