Skip to content

marko-js/express

Repository files navigation


@marko/express
TypeScript Styled with prettier Build status NPM Version Downloads

Render Marko templates in an express application.

Installation

npm install @marko/express

Examples

Setup

import express from "express";
import markoMiddleware from "@marko/express";
import Template from "./template.marko";

const app = express();

app.use(markoMiddleware());

app.get("/", (req, res) => {
  // Streams Marko template into the response.
  // Forwards errors into expresses error handler.
  res.marko(Template, { hello: "world" });
});

$global / out.global

When calling res.marko the input.$global is automatically merged with app.locals and res.locals from express. This makes it easy to set some global data via express middleware, eg:

middleware.js

export default (req, res, next) => {
  res.locals.locale = "en-US";
};

Then later in a template access via:

<div>${out.global.locale}</div>

Redirects

Allows res.redirect to redirect HTML responses that have already begun sending content. This is done by flushing a <meta> tag redirect with a <script> fallback before prematurely ending the response.

If $global includes a cspNonce it will be included in the redirect script.

app.get("/", (req, res) => {
  res.marko(Template, { $global: { cspNonce: "xyz" } });

  // If a redirect occurs mid stream we'll see
  // something like the following in the output:
  //
  // <meta http-equiv=refresh content="0;url=...">
  // <script nonce="xyz">location.href="..."></script>
});

Code of Conduct

This project adheres to the eBay Code of Conduct. By participating in this project you agree to abide by its terms.

About

Render Marko templates in an express application.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

 
 
 

Contributors