最佳 JSON-LD 实践:使用多个 <script> 元素?
Best JSON-LD practices: using multiple <script> elements?
我很好奇将 JSON-LD 应用到 schema.org 网站的最佳实践。
如果我有一个带有 Article
的页面并且我还想在我的页面上定义 WebSite
,我会这样:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "http://www.example.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "http://www.example.com/search?&q={query}",
"query-input": "required"
}
}
</script>
<!- … -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Article",
"author": "John Doe",
"interactionCount": [
"UserTweets:1203",
"UserComments:78"
],
"name": "How to Tie a Reef Knot"
}
</script>
这是对还是错?将它们合并到同一个脚本或项目数组中是否有任何好处或需要?
有效。您可以拥有任意数量的数据块(= script
个元素)。
仅使用一个 script
元素的一个可能好处是:它可以简化多个项目之间的关系(例如,如果您决定使用 hasPart
or mainEntity
),因为您只需嵌套项目。
但是,当使用单独的数据块时,通过使用 @id
().
引用项目的 URI,当然也可以建立这些关系。
(作为参考, 可以用 @graph
。)
除了限制您在网站中存储和管理模式数据的方式外,拥有单个或多个数据块没有任何好处。
例如,如果您网站中的不同组件负责独立生成每个数据块,则您可能需要将它们分开。或者,如果您的网站能够在一个地方管理一个页面的所有模式,那么管理单个数据块并将其呈现为单个 script
元素可能会更简单。
您可以像这样将每个模式列为一个数组,将它们合并到一个脚本中:
<script type="application/ld+json">
[
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "http://www.example.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "http://www.example.com/search?&q={query}",
"query-input": "required"
}
},
{
"@context": "http://schema.org",
"@type": "Article",
"author": "John Doe",
"interactionCount": [
"UserTweets:1203",
"UserComments:78"
],
"name": "How to Tie a Reef Knot"
}
]
</script>
我很好奇将 JSON-LD 应用到 schema.org 网站的最佳实践。
如果我有一个带有 Article
的页面并且我还想在我的页面上定义 WebSite
,我会这样:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "http://www.example.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "http://www.example.com/search?&q={query}",
"query-input": "required"
}
}
</script>
<!- … -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Article",
"author": "John Doe",
"interactionCount": [
"UserTweets:1203",
"UserComments:78"
],
"name": "How to Tie a Reef Knot"
}
</script>
这是对还是错?将它们合并到同一个脚本或项目数组中是否有任何好处或需要?
有效。您可以拥有任意数量的数据块(= script
个元素)。
仅使用一个 script
元素的一个可能好处是:它可以简化多个项目之间的关系(例如,如果您决定使用 hasPart
or mainEntity
),因为您只需嵌套项目。
但是,当使用单独的数据块时,通过使用 @id
(
(作为参考,@graph
。)
除了限制您在网站中存储和管理模式数据的方式外,拥有单个或多个数据块没有任何好处。
例如,如果您网站中的不同组件负责独立生成每个数据块,则您可能需要将它们分开。或者,如果您的网站能够在一个地方管理一个页面的所有模式,那么管理单个数据块并将其呈现为单个 script
元素可能会更简单。
您可以像这样将每个模式列为一个数组,将它们合并到一个脚本中:
<script type="application/ld+json">
[
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "http://www.example.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "http://www.example.com/search?&q={query}",
"query-input": "required"
}
},
{
"@context": "http://schema.org",
"@type": "Article",
"author": "John Doe",
"interactionCount": [
"UserTweets:1203",
"UserComments:78"
],
"name": "How to Tie a Reef Knot"
}
]
</script>