Skip to content
This repository has been archived by the owner on Aug 17, 2023. It is now read-only.

Latest commit

 

History

History
129 lines (93 loc) · 3.21 KB

README.md

File metadata and controls

129 lines (93 loc) · 3.21 KB

toa-mejs

Mejs render module for toa, it is available for koa.

NPM version Build Status Downloads

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 is undefined.
  • options.locals: global locals, can be function type, this in the function is toa's context.
  • options.writeResp: Write template to response body, default is true.
  • options.glob: Glob options
  • options.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 is undefined, set false to disable global layout.
  • data.writeResp: Write template to response body, default is true.
  • ...
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)