@marko/express
v2.1.0
Published
Render Marko templates in an express application.
Downloads
1,590
Readme
Render Marko templates in an express application.
Installation
npm install @marko/expressExamples
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.
