next-元数据创建、更新 SEO 优化

next,seo · 浏览次数 : 0

小编点评

**页面元数据配置** **根页面** 在根页面 (`app/layout.tsx`) 中,您可以使用 `export const metadata: Metadata = {...}``声明一个元数据对象,其中包含标题和描述等关键信息。例如: ```tsx export const metadata: Metadata = { title: "defaultTitle", description: "I am description", }; ``` **特定页面** 如果您需要为特定页面设置独特的标题或描述,您可以使用以下语法在 `metadata` 对象中定义它们: ```tsx export const metadata: Metadata = { title: "xxxxdetails", description: " 我是 xxxx 详情描述", }; ``` **优先级设置** 在配置元数据时,遵循页面层级深度原则,即页面最深层级的设置将具有最高的优先级,而位于 `app/layout` 下的设置则享有最低的优先级。例如: ```tsx export const metadata: Metadata = { title: "子页面 title", }; ``` **异步更新** 为了确保在服务器端进行页面渲染时能够正确应用元数据,请使用 `async` 关键字声明一个异步函数并返回一个 `Metadata` 对象。例如: ```tsx export const generateMetadata = async ({ params, searchParams }): Promise => { // 处理异步请求 return { title: "staticTitle" }; }; ``` **示例** ```tsx // app/layout.tsx export const metadata: Metadata = { title: "defaultTitle", description: "I am description", }; // app/about/details.tsx export const metadata: Metadata = { title: "xxxxdetails", description: " 我是 xxxx 详情描述", }; ```

正文

在创建Next.js项目时,根页面会自动生成一个metadata对象,其中包含标题和描述等关键信息。每当页面被访问时,这个metadata对象会被读取并应用到HTML的默认配置中,确保页面的基本信息得以正确展示。在存在单独页面需要采用独特的标题或描述时,这些特定页面的元数据将优先于根元素所设定的全局元数据,从而进行替换操作。通过为这些页面设置独特的元数据,我们可以确保访问者或搜索引擎在访问这些页面时能够获取到最准确、最相关的信息。因此,在设计和开发网站或应用程序时,我们需要考虑如何为每个页面设置独特的元数据,并在需要时优先使用这些元数据,以提供最佳的用户体验和搜索引擎优化效果。

  • 支持对title和description进行独立的配置,以灵活满足各类页面需求。
  • 在配置优先级方面,我们遵循页面层级深度原则,即页面最深层级的设置将具有最高的优先级,而位于app/layout下的设置则享有最低的优先级。这一规则设计旨在确保页面级别的特定设置能够覆盖全局或布局级别的通用设置,从而更加精确地控制页面的标题和描述内容。
  • 仅适用于服务端渲染场景,以确保在服务器端进行页面渲染时能够正确应用优先级设置。
//app/layout.tsx 根元素中默认生成的
export const metadata: Metadata = {
  title: "defaultTitle",
  description: "I am description",
};


//app/about/details.tsx  在指定页面设置metadata
export const metadata: Metadata = {
  title: "xxxxdetails", //可以单独修改
  description: " 我是 xxxx 详情描述",//可以单独修改 ⚠️该字段只会进行合并不会进行替换
};

个性化 metadata

export const metadata: Metadata = {
    title: {
        default:'', //默认的
        absolute:'', //绝对的
        template:'%s | test' //使用模板符 进行替换
    },
}

//当前页面需要更新 title 的时候,可以根据根元素配置的 title 类型来进行个性化展示
//示例:
    // app/layout.tsx
    export const metadata: Metadata = {
        title: '子页面 title', //最终会跟页面配置的template(%s),进行替换
    }
    
    //app/about/details.tsx
    export const metadata: Metadata = {
        title: {
            absolute: '绝对子页面 title', //最终会替换跟页面的 title 直接展示
        },
    }

异步更新 metadata

import {Metadata} from "next";

//上级路由携带进来的参数
type Props = {
    params: { id: string }
    searchParams: { [key: string]: string | string[] | undefined }
}

//改函数支持异步请求
export const generateMetadata = async ({params, searchParams}: Props): Promise<Metadata> => {
    const title: string = await new Promise(resolve => {
        setTimeout(() => {
            resolve(`async title ${params.id}`)
        }, 200)
    }) 
    return {
        title: 'staticTitle' || title || params.id //取决于父级传递过来的参数
    }
}
export default function Page() {
    return <>
        示例 code
    </>
}

与next-元数据创建、更新 SEO 优化相似的内容:

next-元数据创建、更新 SEO 优化

在创建Next.js项目时,根页面会自动生成一个metadata对象,其中包含标题和描述等关键信息。每当页面被访问时,这个metadata对象会被读取并应用到HTML的默认配置中,确保页面的基本信息得以正确展示。在存在单独页面需要采用独特的标题或描述时,这些特定页面的元数据将优先于根元素所设定的全局

BGP中next-hop-self 小实验

next-hop-self 在EBGP和IBGP边界使用,对ibgp下一跳邻居使用 配置命令 router bgp 1234 neighbor 2.2.2.2 next-hop-self 使用Next-hop-self原因 EBGP的路由传进IBGP时,带的下一跳是EBGP的地址。在IBGP中传给下

next-route

在目录结构中,我们精心创建的每一个文件最终都会经过处理,转化为相应的页面路由。然而,值得注意的是,某些特殊文件格式在生成过程中并不会被当作路由路径来处理。 app |-auth login page.tsx password page.tsx //最后生成的路由路径 //·localhost:300

next.js app目录 i18n国际化简单实现

最近在用next写一个多语言的项目,找了好久没找到简单实现的教程,实践起来感觉都比较复杂,最后终于是在官方文档找到了,结合网上找到的代码demo,终于实现了,在这里简单总结一下。 此教程适用于比较简单的项目实现,如果你是刚入门next,并且不想用太复杂的方式去实现一个多语言项目,那么这个教程就挺适合

[转帖]SystemTap Beginners Guide -profiling

Next ⁠5.3. Profiling The following sections showcase scripts that profile kernel activity by monitoring function calls. ⁠5.3.1. Counting Function Call

5分钟入门 next13

上半年vercel 推出了nextjs13 这个大版本,刚好最近有个c端的项目,所以就用了这个框架来写,技术体系基本也是文档提到的 tailwindcss + ts + swr + ssr ,总的来开发体验还可以,不管是打包速度、文档、错误信息提示目前都还满意,只不过目前nextjs13 中文资料有

【HarmonyOS NEXT】获取卸载APP后不变的设备ID

1. 背景 在HarmonyOS NEXT中,想要获取设备ID,有3种方式 UDID: deviceinfo.udid ,仅限系统应用使用 AAID: aaid.getAAID(),然而卸载APP/恢复设备出厂设置/后会发生变化 OAID:identifier.getOAID,同一台设备上不同的Ap

日志服务 HarmonyOS NEXT 日志采集最佳实践

背景信息 随着数字化新时代的全面展开以及 5G 与物联网(IoT)技术的迅速普及,操作系统正面临前所未有的变革需求。在这个背景下,华为公司自主研发的鸿蒙操作系统(HarmonyOS)应运而生,旨在满足万物互联时代的多元化设备接入、高效协同和安全可靠运行的需求。 HarmonyOS 不仅着眼于智能手机

Web3开发者技术选型:前端视角(next.js)

引言 在现代Web开发的世界中,Web3技术的兴起为前端开发者开辟了新的可能性。Web3技术主要指的是建立在区块链基础上的分布式网络,使用户能够通过智能合约和去中心化应用(DApps)直接交互,而无需传统的中介机构。为了有效地开发Web3应用,前端开发者需要掌握一些关键的技术和工具,其中Next.j

[转帖] SystemTap Beginners Guide -network

SystemTap Beginners Guide Next ⁠Chapter 5. Useful SystemTap Scripts 5.1. Network5.1.1. Network Profiling5.1.2. Tracing Functions Called in Network Soc