我已经设法让 Nunjucks 与 Sails.js 一起工作,但似乎在我重新启动服务器之前这些更改并没有被采纳。我会自动看到一次或两次反映的更改,但在那之后,即使手动刷新浏览器也不会显示我的更改。
我用这里的建议实现了 LiveReload:
但我不怀疑这是 LiveReload 的问题。
有没有其他人让 Sails.js 和 Nunjucks 一起玩得很好?如果是这样,怎么做?
我已经设法让 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();
};
结合livereload一切正常。
在 /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;
}
}
希望这会对某人有所帮助;)