You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constpath=require('path');constviews=require('@ladjs/koa-views');constMeta=require('koa-meta');/// ...// set template rendering engine (see @ladjs/web for inspiration)app.use(views(path.join(__dirname,'views')));constmeta=newMeta({'/': ['Home','Our home page description'],'/contact',['Contact','Contact us with questions']});// note: you can also pass a second argument of a custom `logger`// the default logger is `console` and must have a `.error` method// `const meta = new Meta({}, console);`app.use(meta.middleware);app.use((ctx,next)=>{// since the previous middleware was defined before this// the `ctx.state` object has been populated with metadata// when the render call occurs (it will not override any existing set values)// for a request with `ctx.path` of `/` it will output:// { title: 'Home', description: 'Our home page description' }ctx.render('home');});
Therefore in your views you can render the meta data easily:
doctype html
html
head
title=meta.title
meta(name="description", content=meta.description)
Programmatically get a meta object/translated version of title and description:
constMeta=require('koa-meta');constmeta=newMeta({'/': ['Home','Our home page description'],'/posts': ['Posts','Posts by our team']});console.log(meta.getByPath('/posts/123456'));// `{ title: 'Posts', description: 'Posts by our team' }`
Translation Support
This package supports translation out of the box.
It checks for a function set on ctx.request.t and utilizes that function to translate based off the request's locale.
Child Path Support
This package supports parent meta data lookup for children of paths.
This means if you define in your configuration a path of /posts and a request is made to /posts/123456 (with this path not being defined in your configuration), then it will use /posts definition for /posts/123456.
Error Catching
By default this package will throw an error if a child path was found that does not have a parent defined.
This is extremely useful for retaining quality control with your configuration.
However this is configurable based off the third argument passed to new Meta(), e.g. new Meta(config, logger, levelForMissing.
The value of levelForMissing defaults to error for when process.env.NODE_ENV is equal to development, otherwise it defaults to debug.
This is configurable, therefore you can simply pass new Meta(config, logger, 'warn') if you want warn to be the log level for missing meta configurations.