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;
}
}
希望这会对某人有所帮助 ;)
我已经设法让 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;
}
}
希望这会对某人有所帮助 ;)