1.1.3 • Published 8 years ago
koa-nunjucks-next v1.1.3
koa-nunjucks-next
koa2 view render based on nunjucks, support asynchronous filters.
Installation
npm install koa-nunjucks-nextWarn
Do not use babel compile。
API
views(root, opts)
root: (defaultviews) Views location. All views yourender()are relative to this path.optsnunjucks configure optsopts.globals: nunjucks global values that will be available to all templatesopts.filters: nunjucks filters, support asynchronous filteropts.extensions: nunjucks extensions (e.g. highlight code blocks)
filters: {
asyncAdd1: (val1, val2) => {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(val1 + val2), 2000);
});
},
asyncAdd2: async (val1, val2) => {
let val3 = await new Promise((resolve, reject) => {
setTimeout(() => resolve(100), 1000);
});
return await new Promise((resolve, reject) => {
setTimeout(() => resolve(val1 + val2 + val3), 2000);
});
},
syncAdd: (val1, val2) => {
return val1 + val2;
}
}opts.extname: (defaulthtml) Extension for your views
// instead of this
await ctx.render('test.html')
// you can
await ctx.render('test')ctx.render(template, content, [isStringTemplate])
// renders a template
await ctx.render('test', {})
// renders a raw string
await ctx.render('{{ val1 | asyncAdd1(1) }}', { val1: 66666 }, true)Example
let views = require('koa-nunjucks-next');
app.use(views('../views', {
filters: {
asyncAdd: (val1, val2) => {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(val1 + val2), 2000);
});
},
syncAdd: (val1, val2) => {
return val1 + val2;
}
}
}));
router.get('/test-template', async (ctx, next) => {
await ctx.render('test', {
'val1': 66666
});
});
router.get('/test-string', async (ctx, next) => {
await ctx.render('{{ val1 | asyncAdd(1) }}', {
'val1': 66666
}, true);
}); //==> 66667