A document head manager middleware for koa.
npm i koa-head
note: this package can be used as native ES6 module but has fallback to CommonJS require
.
import Koa from "koa";
import koaHead from "koa-head";
const app = new Koa();
app
.use(koaHead())
.use(async (ctx, next) => {
ctx.documentHead.setTitle("Title for my webpage");
ctx.documentHead.addMetaTag({
name: "twitter:card",
content: "summary_large_image"
});
ctx.documentHead.addLink({ rel: "canonical", href: "index.html" });
ctx.documentHead.addStyle("body { background: aliceblue; }");
ctx.documentHead.addScript("{ fixture: 'test fixture' }");
await next();
})
.use(ctx => {
const documentHead = ctx.documentHead.toHTML();
const userData = { name: "John Doe" };
await ctx.myAwesomeLayoutEngine("user-view", {
documentHead,
userData
});
});
app.listen(3333);
will make documentHead
variable to contain:
<title>Title for my webpage</title>
<meta name="twitter:card" content="summary_large_image" />
<link rel="canonical" href="index.html" />
<style type="text/css">
body {
background: aliceblue;
}
</style>
<script type="text/javascript">
{
fixture: "test fixture";
}
</script>
so you can use it in a place in your layout.
Set document title.
Add <meta />
tag.
Add <link />
tag.
Add <style />
tag.
Add <script />
tag.
Render all set content to coresponding HTML tags.
Option | Description | Default value |
---|---|---|
ctxNamespace |
Name under which middleware is exposed in cxt object and is used by other middlewares i.e. ctx.documentHead.setTitle('Hello') . |
'documentHead' |
stateNamespace |
Name under which middleware stores values in ctx.state |
'documentHead' |
documentTitleFormatter |
If set, all values passed to .setTitle() function will pe parsed by this formatter. |
title => title |
toHtml |
Config for toHtml function. | { [default_values] } |
toHtml.tagSeparator |
Separator between tags inside one group. | \n |
toHtml.groupSeparator |
Separator between group of tags. | \n\n |