HTMLJSON-LD怎么实现_结构化数据标记方案

哎呀,让我告诉你 JSON-LD。
几年前,我在做一个网站,在玩的过程中遇到了很多问题。

记得去年,我帮朋友在一个电子商务网站上添加了产品信息,希望能得到像Google Shopping一样丰富的结果。
我一开始犯了一个错误,使用了旧的微数据或RDFa,但事实证明谷歌现在不太支持它。
然后,我只好硬着头皮学习JSON-LD。
一开始我把script标签写错了,type属性写反了。
我花了很长时间。

最大的陷阱是什么?有一次我在写商品信息时,价格属性的小数点没对齐或者货币单位不对。
Schema.org 验证器给了我一个红十字。
想一想,这是给搜索引擎看的,并没有什么错。
然后每天面对验证者,改了三遍才通过。
有时,在写入事件信息时,组织者属性未正确填写。
因此,当搜索引擎抓取时,该事件会显示为私有日志。
真是令人困惑。

现在让我告诉你一些真实的事情: 1 . 确保将其添加到 <head> 中,而不是 <body> 中。
我尝试将其放入body中,但百度不识别。
2 . 数据属性拼写错误,例如文章标题和图像。
这些关键字必须拼写完全相同。
我把图像写成上一张图像,验证器直接给我报错。
3 . 注意动态添加的数据,例如使用JavaScript运行的JSON-LD。
如果搜索引擎不捕获JS执行过程,数据就会丢失。
我去年建立了一个新闻网站,使用了SSR,也就是说服务器先运行HTML,并添加JSON-LD,以便搜索引擎爬取时可以看到完整的数据。

但是,这样做有很多好处。
你看,我目前正在帮人建网站,使用的是JSON-LD,在Google Search Console中的显示效果非常好,包括丰富的结果、知识图等。
而且,数据与页面分离,在不改变HTML结构的情况下更容易修改。

我告诉你,写JSON-LD最可怕的是:
数据与页面显示不一致。
比如页面上价格写的是1 00,而JSON-LD写的是1 1 0,这样肯定不行。

语法错误,例如逗号后面没有加引号等低级错误,在调试时非常令人困惑。
我有一个项目,但是有多余的逗号,验证器提示很多无法解释的问题。

为了进行验证,我建议使用 Google 的结构化数据测试工具。
将代码直接粘贴进去,并逐行用红色标记。
还有一个Google Search Console升级报告,非常有用。

总之,JSON-LD是个好东西,但是需要慢慢来,不要着急。
您首先了解最基本的文章和产品类型,然后慢慢扩展。
如果您有任何疑问,请问我。
这都是基于我的经验。

json里的数据怎么在mounted出来里显示

这是一个陷阱。
不要直接使用 jQuery 的 $.ajax。
您应该使用更现代的方法,例如 fetch API。


javascript document.addEventListener('DOMContentLoaded', function() { fetch('您的后台返回json页面地址', { 方法:'POST', 标题:{ '内容类型':'application/x-www-form-urlencoded;charset=utf-8 ' }, body: '操作=getsiteroomname&h3catid=' + h3catid }) .then(响应=>response.json()) .then(数据 => { document.getElementById('用户名').textContent = data.用户名; }) .catch(错误=> { alert('系统错误,请联系管理员'); }); });
实践提醒:确保后端API能够正确接收POST请求并处理参数。

Gin框架如何渲染JSON、XML和HTML数据?

Gin 框架确实很容易使用。
特别是对于渲染 JSON、XML 和 HTML 等数据,API 相当简单。
看一下,就这样使用吧:
1 . 渲染 JSON 数据:
只需使用 c.JSON(status, data)。
该状态是 HTTP 状态代码,例如 2 00 表示成功。
数据是您要呈现的 JSON 数据。
一般使用gin.H,它是一个键值对或者一个结构体。
让我给你举个例子:
去 包主要
导入( “github.com/gin-gonic/gin” )
func main() { r := gin.Default() r.GET("/json", func(c gin.Context) { // 使用gin.H定义键值对 数据 := 杜松子酒.H{ "message": "你好,JSON!", “状态”:2 00, } c.JSON(2 00, data) // 返回 JSON 数据 }) r.运行(“:8 08 0”) }
输出是这样的:
json { "message": "你好,JSON!", “状态”:2 00 }
很简单,对吧?
2 渲染 XML 数据:
这使用 c.XML(status, data)。
该状态仍然是 HTTP 状态代码。
对于数据来说,一般使用结构体,XML字段名必须通过结构体标签来定义。
让我再举一个例子:
去吧 包主要
导入( “github.com/gin-gonic/gin” )
类型 Book 结构 { 标题字符串 xml:"title" 作者字符串 xml:"author" }
函数 main() { r := gin.Default() r.GET("/xml", func(c gin.Context) { 书:=书{ 标题:“GinGuide”, 作者:“GinTeam”, } c.XML(2 00, book) // 返回XML数据 }) r.运行(“:8 08 0”) }
输出是这样的:
xml <书> <标题>金指南</标题> 杜松子酒团队</作者> </书>
注意 xml 的结构标签。

3 渲染 HTML 数据:
这有点复杂,使用 c.HTML(status, template, data)。
status 仍然是 HTTP 状态代码。
Template是HTML模板文件的名称,需要提前加载。
data是传递给模板的数据,一般使用gin.H。
步骤如下:

首先加载模板文件,使用r.LoadHTMLGlob()加载。

定义一个模板文件,例如index.,并使用Go模板语法插入数据。

然后调用c.HTML(),传入模板名称和数据。

让我再举个例子:
去吧 包主要
导入( “github.com/gin-gonic/gin” )
func main() { r := gin.Default() //加载模板文件(支持通配符) r.LoadHTMLGlob("模板/") r.GET("/", func(c gin.Context) { 数据 := 杜松子酒.H{ “标题”:“GinHTML”, "Body": "欢迎使用 Gin 框架!", } c.HTML(2 00, "index.", data) // 渲染 HTML 模板 }) r.运行(“:8 08 0”) }
模板文件 templates/index.html 是这样的:

<头> <标题>{{.标题}}</标题> </头> <正文>

{{.标题}}

{{.正文}}

</正文> </>
输出结果如下:

<头> <标题>GinHTML</标题> </头> <正文>

GinHTML

欢迎使用 Gin 框架!

</正文> </>
总结一下:

JSON:c.JSON(status, gin.H{}) 或结构,适合 API 响应。

XML:c.XML(status, struct{}),需要通过struct标签定义字段名。

HTML:c.HTML(status, template, gin.H{}),需要提前加载模板文件。

通过这些方法,Gin框架可以高效处理不同格式的数据渲染需求。