nuxt 带参数动态路由

nuxt是基于vue.js服务端渲染的框架,其中路由文件不像vue项目那样手动配置,而是依据 pages 目录结构自动生成 vue-router 模块的路由
配置。
基于项目seo优化需求,需要将路由改为动态路由。

一、创建带参数的动态路由(两种方法)

方法一、直接创建一个带参数的动态路由

新建文件的时候直接创建带参数的动态路由,这个官网中有介绍,我就不总结了,附上官网地址:

https://www.nuxtjs.cn/guide/routing#%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1

方法二、将原有的路由改为动态路由

因为在写页面的时候没有考虑seo,所以现在要将路由改为带参数的动态路由
例如:
	域名/listPage/tagList?id=454521
	改为
	域名/listPage/tagList/454521

直接在nuxt.config.js文件中设置
export default {
  mode: 'universal',
  router: {
	....
    extendRoutes(routes, resolve) {
      routes.push(
        {
          path: '/:id.html',  // 注意:取参数时,参数名就是此处设置的名字,要保持一样
          component: resolve(__dirname, 'pages/articles/_id.vue'),
          name: 'articles-id',
        },
        {
          path: '/:id/page/:num',  //携带了两个参数,传参的时候位置要对应正确
          component: resolve(__dirname, 'pages/index/normalList.vue'),
          name: 'index-normalList',
        },
        {
          path: '/d/:id',
          component: resolve(__dirname, 'pages/index/downloadDetail.vue'),
          name: 'index-downloadDetail',
        },
      );
    },
  },
  }

二、页面路由跳转(两种方法)

方法一:nuxt-link 组件用于在页面中添加链接至别的页面

<template>
  <div>
    <h1>Home page</h1>
    <nuxt-link :to="{path:'/preview/' + 参数 + '.html'}">关于</nuxt-link>
  </div>
</template>

方法二:

<template>
  <div>
    <h1>Home page</h1>
    <div @click="goTo">关于</div>
  </div>
</template>


goTo() {
	const routeData = this.$router.resolve({
              path: `/preview/${参数}.html`,
            });
            window.open(routeData.href, '_blank');
}

三、获取参数的方法

1、在asyncData获取参数

async asyncData(content) {
    const [detail] = await Promise.all([
      axios.get(`${content.env.baseUrl}/speak/speakWorks/getWorksListByInteresting`, {
        params: {
          id: content.route.params.id,
        },
      }),
    ]);
     return {
      articleDetail: detail.data.result,
    };
  },

2、在mounted或者methods中获取

this.$route.params.id  // id 为页面携带的参数名

以上就是我对前段时间做的nuxt实现带参数动态路由的设置方法,有不对的地方欢迎大家指正,一起进步~

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值