Nuxt项目动态路由带参接参

我们创建一个Nuxt项目
然后 在pages目录下创建 engineering.vue文件 参考代码如下

<template>
  <div>
    <div>工程界面div>
    <nuxt-child>nuxt-child>
  div>
template>

<script>
export default {
  name: 'EngineeringPage'
}
script>

<style>
style>

然后在pages下创建一个 engineering文件夹 下面创建一个 Information.vue文件
参考代码如下

<template>
    <div>信息工程div>
template>

<script>
export default {
  name: 'InformationgPage'
}
script>

<style>
style>

然后在pages下的index.vue组件中编写代码如下

<template>
  <div>
      <ul>
          <li
            v-for = "(item,index) in appList"
            :key = "index"
            @click = "visitApp(item)"
          >{{ item }}li>
      ul>
  div>
template>

<script>
export default {
  name: 'IndexPage',
  data() {
    return {
      appList: [
          "/engineering",
          "/engineering/Information",
          "/engineering/111"
      ]
    }
  },
  methods:{
    visitApp(url) {
        this.$router.push(url);
    }
  }
}
script>

我们这里在data中定义了一个响应式数据 是一个字符串数组叫 appList 他下面的每一个字符串对应一个路径
然后 通过v-for将他渲染在列表上
然后定义了一个visitApp事件 点击时将用户点击的节点放入router.push中进行跳转
Nuxt项目动态路由带参接参_第1张图片
Nuxt项目动态路由带参接参_第2张图片
Nuxt项目动态路由带参接参_第3张图片
如图可见 我们点击前两个都是能正常跳转的 因为他们都有对应的组件
但我们点第三个 很显然他就找不到了 因为engineering文件夹下并没有111.vue组件
Nuxt项目动态路由带参接参_第4张图片
但这个111是一个路径参数啊 如果 我们每一个id都要在这定义一个vue组件 那可太麻烦了

这就涉涉及到了Nuxt的动态路由 当然 这里指的不是像vue那样动态注入的后台管理路由 只是动态接受路径参数的路由组件

写法就是 例如 你访问 /engineering/111 首先在pages下创建一个engineering 文件夹 然后 在这个文件夹下 创建一个 下划线跟路由参数名的组件 例如 我这个 111 我想要这个参数叫 userid
我们就可以 在engineering 下创建一个 _userId.vue
Nuxt项目动态路由带参接参_第5张图片

参考代码如下

<template>
    <div>我是一个动态接收userId的路由组件div>
template>

<script>
export default {
  name: 'InformationgPage'
}
script>

<style>
style>

Nuxt项目动态路由带参接参_第6张图片
大家不用担心路径参数影响到原有的子路由
Nuxt项目动态路由带参接参_第7张图片
因为 他会先匹配 如果没有对应的子路由 才去匹配 下划线规则的动态路由
但如果你下面有这种动态路由 你直接访问他
它就会直接给你匹配到这个参数路由上来 因为他会认为你这个参数传了个空进来
Nuxt项目动态路由带参接参_第8张图片

然后 我们在这个动态路由中 也可以拿到传过来的参数 我们改写_userId.vue代码如下

<template>
    <div>我接收到的userId是{{this.$route.params.userId}}div>
template>

<script>
export default {
  name: 'InformationgPage'
}
script>

<style>
style>

然后我们再访问http://localhost:3000/engineering/111
Nuxt项目动态路由带参接参_第9张图片
他就输出了传过来的路由参数

最后再强调一次 你可以通过 下划线 任何名字 例如 _id.vue _name.vue 命名 然后通过 this. r o u t e . p a r a m s . i d t h i s . route.params.id this. route.params.idthis.route.params.name去取
这个名字是自己定的 只要记得加下划线语法就好

你可能感兴趣的:(vue.js,javascript,前端)