@marko/express
v2.1.0
Published
Render Marko templates in an express application.
Downloads
2,214
Readme
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.