优化您的网站:Next.js 13新元数据API教程
目录
- 介绍
- 什么是Next.js
- 版本13.2的更新
- 一起来了解元数据功能
- 停止使用head标签
- 总结
介绍 {#intro}
最近您可能创建了一个新的Next.js应用程序,特别是在Next.js发布了13.2版本之后。当您打开应用程序目录并查看时,可能会注意到某些东西消失了——现在已经没有head
文件了。原因是在13.3版本中,head
特殊文件已被弃用并移除。在所有未来的版本中,您的元数据将不再保存在head
文件中。在这个视频中,我将向您展示如何使用layout.js
文件中的新元数据功能。
什么是Next.js {#nextjs}
Next.js是一个流行的React框架,它允许我们在构建Web应用程序时轻松处理服务器渲染和静态生成。
版本13.2的更新 {#update}
在Next.js的13.2版本中,引入了一些新功能和改进,其中包括对元数据的重大更改。版本13.2之后,head
标签将不再起作用,取而代之的是一个新的元数据方法。
一起来了解元数据功能 {#metadata}
在Next.js中,我们可以通过在文件顶部添加一个特殊的metadata
导出常量来定义页面的元数据。让我们逐个了解元数据对象中的每个关键字。
标题 {#title}
title
关键字控制着网站的名称以及浏览器标签上显示的文本。例如,在主页的元数据标签中,我们可以将title
设为"我的Next网站"。当我们打开应用程序时,浏览器标签上的文本就会变为"我的Next网站"。
标题模板 {#title-template}
如果您只想在应用程序的根目录中定义一个元数据模板,而在其他页面中不想创建一个新的布局,您可以使用title templates
。您可以在根目录中的title
值中定义默认标题,并在将来的页面中使用template
关键字来更新标题部分。让我来演示一下。
假设我们的about
页面不需要创建一个全新的布局,我们只想更新标题模板的一部分,并且不用担心其他元数据。我们可以在页面的顶部添加以下代码:
export const metadata = {
title: 'about page'
};
现在,如果我们打开about
页面,您会注意到浏览器标签上显示的是"about page"。
页面中的元数据 {#page-metadata}
即使页面没有使用布局,我们仍然可以向页面添加元数据,但它将使用该页面所使用的布局的默认模板标题。这也适用于根布局。例如,如果我们刷新about
页面,您会注意到现在浏览器标签上只显示"default title",这是我们在全局布局中添加的默认标题。
描述 {#description}
description
关键词用于定义页面的描述,它将在Google搜索结果和页面中显示。如果您希望页面有一个独特的描述,您需要为该页面添加一个描述。否则,将显示页面所使用布局中定义的描述。
关键词 {#keywords}
keywords
是用于告诉搜索引擎您的页面或网站相关关键词的关键字。通过在keywords
中列出与您的页面或网站相关的关键词,您可以帮助搜索引擎了解页面的内容。
Open Graph {#open-graph}
Open Graph使得任何网页都可以成为社交图谱中的一个富对象。您可以在metadata
中创建一个openGraph
对象,并设置标题、描述、URL、图片等值。这样,当人们在社交媒体平台上分享您的网页时,它们将呈现出现如下效果:
[示例]
Robots {#robots}
如果您想要控制搜索引擎的机器人如何处理您的页面,例如,如果您希望Googlebot能够索引您的网站,您可以使用robots
关键字和Googlebot
关键字,并将其index
值设置为true
。
图标和主题颜色 {#icons}
如果您想设置页面的图标(如Favicons和Apple Icons)、主题颜色等内容,您可以在metadata
中设置相应的关键字。
扩展API和Manifest {#extension-api}
如果您使用Web扩展API,您可以使用Manifest
关键字,并且该关键字所在的manifest.json
文件是每个使用Web扩展API的扩展必须包含的唯一文件。
社交媒体标签 {#social-media-tags}
除了上述关键字外,还可以使用特定于社交媒体的元标记来自定义每个平台上的分享信息。例如,您可以创建Twitter
关键字,并设置card
、title
、description
、site ID
、creator
、creator ID
和images
等值,以定制在Twitter上分享时的显示效果。类似地,您还可以设置其他社交媒体平台的元标记。
停止使用head标签 {#stop-using-head}
在版本13.2之后,head
标签将停止起作用,因此您不应再使用它们。相反,你应该在屏幕的顶部使用export const metadata
来定义元数据。如果您升级到13.2版本,并且仍然在应用程序目录中使用head
标签,可能会导致您的网站出现问题。
总结 {#summary}
Next.js的版本13.2引入了一种新的元数据方法,使我们能够以更简单和一致的方式定义和管理页面的元数据。通过适当使用元数据关键字,我们可以为搜索引擎和社交媒体平台提供准确和吸引人的信息。请确保停止使用head
标签,并在应用程序的顶部使用export const metadata
来设置元数据。这将确保您的网站在升级到13.2及以后的版本时正常工作。
资源:
FAQ
问:元数据是否适用于静态生成的页面?
答:是的,您可以在Static Generation页面中使用元数据,就像在服务器渲染页面中一样。您可以通过在页面中的export async function getStaticProps()
函数中设置元数据来实现这一点。
问:在多个页面中,我可以使用相同的元数据模板吗?
答:是的,您可以在多个页面中使用相同的元数据模板。只需在每个页面中的export async function getStaticProps()
函数中设置相同的元数据即可。
问:我如何在动态路由页面中设置不同的元数据?
答:对于动态路由页面,您可以在export async function getStaticProps(context)
函数中,根据路由参数设置不同的元数据。根据您的需求,您可以在每个动态路由页面中设置不同的元数据。
问:我可以为我的整个Next.js应用程序设置全局元数据吗?
答:是的,您可以在全局布局中设置全局元数据,然后在每个页面中使用metadata
关键字来更新特定页面的元数据。这样,您可以为整个应用程序共享一组默认元数据,并根据需要在每个页面中进行个性化设置。