Awesome
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-mejs
API
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,this
in 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
, setfalse
to 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)