Skip to content
/ ejs Public

a koa view render middleware, support all feature of ejs

License

Notifications You must be signed in to change notification settings

koajs/ejs

Repository files navigation

@koa/ejs

Koa ejs view render middleware. support all feature of ejs.

Build Status

NPM

Usage

Example

const Koa = require("koa");
const render = require("@koa/ejs");
const path = require("path");

const app = new Koa();
render(app, {
  root: path.join(__dirname, "view"),
  layout: "template",
  viewExt: "html",
  cache: false,
  debug: true,
});

app.use(async function (ctx) {
  await ctx.render("user");
});

app.listen(7001);

Or you can checkout the example.

Settings

  • root: view root directory.
  • fs: file system module with same Node.js fs interface (default Node.js fs module).
  • layout: global layout file, default is layout, set false to disable layout.
  • viewExt: view file extension (default html).
  • cache: cache compiled templates (default true).
  • debug: debug flag (default false).
  • delimiter: character to use with angle brackets for open / close (default %).
  • async: When true, EJS will use an async function for rendering. Depends on async/await support in the JS runtime.
  • outputFunctionName: Set to a string (e.g., 'echo' or 'print') for a function to print output inside scriptlet tags.

Layouts

@koa/ejs supports layouts. The default layout file is layout. If you want to change default layout file, use settings.layout. Also you can specify layout by options.layout in await ctx.render. Also you can set layout = false to disable the layout.

<html>
  <head>
    <title>koa ejs</title>
  </head>
  <body>
    <h3>koa ejs</h3>
    <%- body %>
  </body>
</html>

Include

Supports ejs includes.

<div>
  <%- include ('user.html') -%>
</div>

State

Support ctx.state in koa.

TypeScript

If you're project based on TypeScript, we recommend using @types/koa-ejs until we start supporting it in the upcoming releases.

Licences

(The MIT License)