0.5.0 • Published 8 years ago

toa-mejs v0.5.0

Weekly downloads
42
License
-
Repository
github
Last release
8 years ago

toa-mejs

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

NPM version Build Status Downloads

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 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)

0.5.0

8 years ago

0.4.0

9 years ago

0.3.2

10 years ago

0.3.1

10 years ago

0.3.0

10 years ago

0.2.2

10 years ago

0.2.1

11 years ago

0.2.0

11 years ago

0.1.1

11 years ago

0.1.0

11 years ago