这对我有用,但在我的情况下,它并没有完全满足我的需求。使用我的 gulpfile 如下:
//Compile Nunjucks Templates
gulp.task('nunjucks', function() {
nunjucksRender.nunjucks.configure(['templates/'])
return gulp.src('src/pages/*.html')
.pipe(nunjucksRender(nunjucksOptions))
.pipe(gulp.dest(output.html))
.pipe(reload({stream:true}));
});
在这里使用 gulp-data 来注入我的 JSON 仅向页面提供数据,而不是向我包含的部分和宏提供数据。在我的例子中,我使用一个中央 JSON 设置文件来模拟,例如,当用户登录时我的前端会是什么样子:
{
"loggedin":false
}
和
{% if data.loggedin %}
<a href="#" class="nav__item nav__item--login">
<div class="nav__item--login_img">
<img src="http://pipsum.com/200x200.jpg" alt="" />
</div>
<p class="nav__item--login_user">JohnDoe345</p>
</a>
{% else %}
<a href="#login" data-lity class="nav__item nav__item--login">
<div class="nav__item--login_cta">Sign In</div>
</a>
{% endif %}
使所有模板/页面/部分/宏/等都可以访问该文件。我正在使用 gulp-nunjucks-render 的manageEnv
设置如下:
nunjucksOptions = {
path: ['src/pages/', 'src/templates/'],
watch:true,
manageEnv:function(env){
var data = JSON.parse(fs.readFileSync('states.json'));
env.addGlobal('data',data);
}
}
感谢 Alex Ward 提供的关于使用 fs 防止我的 JSON 被缓存的提示。