Component API
Each Schema has an associated component that can be used to configure your sites
Schema in your vue files <template>
. Behind the scenes, these components are simply calling the associated
define${Schema}
function while providing a less boilerplate heavy approach to defining schemas.
Each component implements the same logic and there are multiple ways to define your components.
Headless - Attributes
Any attribute passed on the component will be forwarded to the Schema.
For fields which are prefixed with @
, such as @type
and @id
, you can simply omit the @
.
For example, to set a page name and type:
<template><!-- About us page inline --><SchemaOrgWebPage type="AboutPage" name="About Us" /></template>
Headless - Slots
Alternatively to providing attributes on the prop, you are also able to provide the data through slots which use the same name as the attribute.
- Only supports shallow text nodes
For example, we can generate a FAQ Question with the following:
<template><SchemaOrgQuestion> <template #name> What is the capital of Australia? </template> <template #acceptedAnswer> Canberra </template></SchemaOrgQuestion></template>
Rendered Default slot
If you want to render the markup and want full customisation, you can provide a default slot. The slot props will be the resolved node.
<template><SchemaOrgQuestion> <!-- Scoped slots won't render anything --> <template #name> {{ question }} </template> <template #acceptedAnswer> <div v-html="answer" /> </template> <!-- Default slot will render --> <template> <h2> {{ question }} </h2> <div v-html="answer" /> </template></SchemaOrgQuestion></template>