Vue.js 如何在NuxtJS中构建SEO友好的路由?

Vue.js 如何在NuxtJS中构建SEO友好的路由?,vue.js,nuxt.js,server-side-rendering,headless,strapi,Vue.js,Nuxt.js,Server Side Rendering,Headless,Strapi,我是NuxtJS的新手。我的页面由导航栏/菜单、包含所有文章的博客页面和两个大部分是静态页面组成。(与大多数公司网站一样) 我从一个Strapi API中检索数据,在这里我只能通过它们的ID获取单个条目 我必须做的事情: 当用户单击navbar链接时,我需要将相应文章/帖子的ID传递给文章组件,以便从API检索文章。到目前为止,它工作得很好,但通过路由器参数,一篇文章将有一个类似https://www.example.com/posts/63ndjk736rmndhjsnk736r 我想做什么:

我是NuxtJS的新手。我的页面由导航栏/菜单、包含所有文章的博客页面和两个大部分是静态页面组成。(与大多数公司网站一样)

我从一个Strapi API中检索数据,在这里我只能通过它们的ID获取单个条目

我必须做的事情:

当用户单击navbar链接时,我需要将相应文章/帖子的ID传递给文章组件,以便从API检索文章。到目前为止,它工作得很好,但通过路由器参数,一篇文章将有一个类似
https://www.example.com/posts/63ndjk736rmndhjsnk736r

我想做什么:

我想要一个带有slug
https://www.example.com/posts/my-first-Post
并且仍然将ID传递给文章组件/页面


最好的方法是什么?

您可以在pages文件夹中使用like
\u slug.vue

你的路线是这样的

{
  name: 'posts-slug',
  path: '/posts/:slug?',
  component: 'pages/posts/_slug.vue'
}
然后创建一个新的vue文件

export default {
  validate ({ params }) {
    return /^\d+$/.test(params.id)
  }
}

这样,您还可以访问参数

,您可以在pages文件夹中使用like
\u slug.vue

你的路线是这样的

{
  name: 'posts-slug',
  path: '/posts/:slug?',
  component: 'pages/posts/_slug.vue'
}
然后创建一个新的vue文件

export default {
  validate ({ params }) {
    return /^\d+$/.test(params.id)
  }
}

通过这种方式,您还可以访问参数

您可以使用
查询
。以下是一些例子:

我有一些数据:

data = [{id: "63ndjk736rmndhjsnk736r", name: "my-first-post"}, {id: "88ndjk736rmndhjsnk736r", name: "my-second-post"}]
在我的导航栏列表中:

<template v-for="(item, index) in data" key="index">
    <router-link :to="{ path: '/posts/' + item.name, query: { id: 'item.id' }}"
    >{{item.name}}</router-link>
</template>
您需要的:

  • 创建动态路由->
  • 传递
    query
    named
    id
    这是您的单个条目id
  • 获取查询(id)并使用查询id获取单个条目:
    const postId=this.$route.query.id

  • 您可以使用
    查询
    。以下是一些例子:

    我有一些数据:

    data = [{id: "63ndjk736rmndhjsnk736r", name: "my-first-post"}, {id: "88ndjk736rmndhjsnk736r", name: "my-second-post"}]
    
    在我的导航栏列表中:

    <template v-for="(item, index) in data" key="index">
        <router-link :to="{ path: '/posts/' + item.name, query: { id: 'item.id' }}"
        >{{item.name}}</router-link>
    </template>
    
    您需要的:

  • 创建动态路由->
  • 传递
    query
    named
    id
    这是您的单个条目id
  • 获取查询(id)并使用查询id获取单个条目:
    const postId=this.$route.query.id