0.5.0 • Published 8 years ago
toa-mejs v0.5.0
toa-mejs
Mejs render module for toa, it is available for koa.
toa
Mejs -- Moduled and Embedded JavaScript templates
Example
const Toa = require('toa')
const toaMejs = require('toa-mejs')
const app = new Toa()
app.use(function () {
return this.render('user', {name: 'toa', age: 1})
})
toaEjs(app, 'views/**/*.html', {
layout: 'template',
locals: locals
})
app.listen(3000)Or you can checkout the example.
Installation
npm install toa-mejsAPI
const toaMejs = require('toa-mejs')toaMejs(app, pattern, options)
It will add render method to context.
pattern: Glob pattern to read template files.options.layout: global layout template name, default isundefined.options.locals: global locals, can be function type,thisin the function is toa'scontext.options.writeResp: Write template to response body, default istrue.options.glob: Glob optionsoptions.base: Everything before a glob (same as tplName) starts, default is''.options.delimiter: Character to use with angle brackets for open/close, default is%.options.rmWhitespace: Remove all safe-to-remove whitespace, including leading and trailing whitespace. It also enables a safer version of-%>line slurping for all scriptlet tags (it does not strip new lines of tags in the middle of a line).
context.render(viewName, data)
It is a synchronization function. return template string that filled with data.
data.layout: layout template name, default isundefined, setfalseto disable global layout.data.writeResp: Write template to response body, default istrue.- ...
this.render('user', {name: 'toa', age: 1})this.render('user', {name: 'toa', age: 1, writeResp: false})Layouts
toa-mejs support layout. no default layout, if you want to use default layout template, use options.layout. Also you can specify layout by data.layout in this.render.
Also you can set layout = false; to close layout.
<html>
<head>
<title>toa mejs</title>
</head>
<body>
<h3>toa mejs</h3>
<%- it.body %>
</body>
</html>Include
support mejs default include.
<div>
<%- include('user/show', {user: user}); %>
</div>Locals
pass gobal locals by options.locals, locals can be functions that can be called in mejs templates.
const locals = {
version: 'v1.0.0',
now: function() {
return new Date()
},
__: function() {
return this.__.apply(this, arguments) // toa-i18n's `__` method.
}
}License
The MIT License (MIT)