精华内容
下载资源
问答
  • VUE的动态路由

    2020-04-22 17:01:23
    vue前端的动态路由实现: 1、首先在router中配置动态路由的路径: { path: 'nolist/:no', //相对路径 component: () => import('@/views/nolist'), //导入VIEWS的展示页面 name: 'nolist', ...

    vue前端的动态路由实现:

    1、首先在router中配置动态路由的路径:

      {
       path: 'nolist/:no',                                //相对路径
          component: () => import('@/views/nolist'),      //导入VIEWS的展示页面
          name: 'nolist',
          meta: { title: '动态路由', noCache: true },
          hidden: true
        },
    

    2、触发动态路由的方式,这里选择在表格中,所传入的参数为表格的row.no,使用router-link指定路由的页面

     <el-table-column prop="no" label="编码" width=100px 
                                 sortable="custom">
                  <template slot-scope="{row}">
                  <span v-if="viewDetail">       //当viewDetail为TRUE时触发
                    <router-link :to="'/nolist/'+row.no" class="link-type">
                      {{ row.no }}
                    </router-link>
                  </span>
                  </template>
                  </el-table-column>
    

    3、在路由页面中nolist/:no,创建一个create,用来实现初始化

    created() {
        const ss = this.$route.params && this.$route.params.no
        this.selectFrom(ss)
      },
      
      
      selectFrom(ss){
       const res = selectFromInApi(ss)  //导向一个VUE的API方法selectFromInApi
      }
    
    展开全文
  • Vue的动态路由

    2019-12-16 16:06:02
    我对vue中Router解释,可以到https://blog.csdn.net/Gbing1228/article/details/103556607了解 一、什么是动态路由? 例如:点击不同歌手进入...在vue-router中,动态路由由“:”开头。 <router-link t...

    我对vue中Router的解释,可以到https://blog.csdn.net/Gbing1228/article/details/103556607了解

    一、什么是动态路由?

    例如:点击不同的歌手进入到不同的歌手详情页

    虽然每个请求的id不同,但是都会导航到同一个组件中,在配置路由的时候就不能写死。在vue-router中,动态路由由“:”开头。

     <router-link to="/user/123">User123</router-link>
    
     <router-link to="/user/456">User456</router-link>
     {
       path: "/user/:id",
       component: user
     }

    二、在动态路由中怎么获取动态部分?

    在vue-router实例注入到根实例后,用this.$router来获取router实例,他有一个params属性,来获取这个动态部分。他是一个对象,属性名就是路径中定义的动态id,属性值就是router-link中to的部分。在使用vuex时,组件要想获取state中的状态,使用computed属性,动态路由获取也是一样的用compute属性

    computed: {
                dynamicSegment () {//定义一个computed属性来获取动态router
                    return this.$route.params.id
                }
            }

    三、动态路由的来回切换

    动态路由来回切换时,由于他们指向同一个组件,vue并不会销毁原先创建好的这个组件,而是复用这个组件。第一次点击user/123时,vue就把对应的user组件渲染出来了,在user/123、user/456切换时,user组件就不会发生变化了,组件的生命周期就不管用了。这时,需要用watch来监听$router的变化

    <script>
        export default {
            data () {
                return {
                    dynamicSegment: ''
                }
            },
            watch: {
                $route (to,from){
                    // to表示的是你要去的那个组件,from 表示的是你从哪个组件过来的,
                    //它们是两个对象,你可以把它打印出来,它们也有一个param 属性
                    console.log(to);
                    console.log(from);
                    this.dynamicSegment = to.params.id
                }
            }
        }
    </script>

    四、路由嵌套

    在进入home页面后,他下面还有不同的页面分类,当点击各个分类时,他还需要路由导航到各个部分。vue提供了childrens属性

    {
          path:"/home",
       // 下面这个属性也不少,因为,我们是先进入home页面,才能进入子路由
          component: home,
       // 子路由
          children: [
              {
                 // 当 /home/phone 匹配成功,PHONE会被渲染在 home.vue 的 <router-view> 中
                  path: "phone",
                  component: PHONE
              },
              {
                  path: "tablet",
                  component: tablet
              },
              {
                  path: "computer",
                  component: computer
              }
           ]
    },

    五、命名路由

    直接给路由加一个name属性

    {
        path: "/user/:id",
        name: "user",
        component: user
    }

    使用方法:

    // 当使用对象作为路由的时候,to前面要加一个冒号,表示绑定
    <router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
    
    router.push({ name: 'user', params: { userId: 123 }})

    六、捕获所有路由

    {
      // 会匹配所有路径
      path: '*'
    }
    {
      // 会匹配以 `/user-` 开头的任意路径
      path: '/user-*'
    }

    当使用一个通配符时,$route.params 内会自动添加一个名为 pathMatch 参数。它包含了 URL 通过通配符被匹配的部分:

    // 给出一个路由 { path: '/user-*' }
    this.$router.push('/user-admin')
    this.$route.params.pathMatch // 'admin'
    // 给出一个路由 { path: '*' }
    this.$router.push('/non-existing')
    this.$route.params.pathMatch // '/non-existing'

    七、编程式导航

    router.push(location, onComplete?, onAbort?)

    router.replace用法与前一个函数用法相似

    router.go用来在历史记录中跳转几步

    // 字符串
    router.push('home')
    
    // 对象
    router.push({ path: 'home' })
    
    // 命名的路由
    router.push({ name: 'user', params: { userId: '123' }})
    
    // 带查询参数,变成 /register?plan=private
    router.push({ path: 'register', query: { plan: 'private' }})

    注意:如果提供了 pathparams 会被忽略,需要提供路由的 name 或手写完整的带有参数的 path

    const userId = '123'
    router.push({ name: 'user', params: { userId }}) // -> /user/123
    router.push({ path: `/user/${userId}` }) // -> /user/123
    
    // 这里的 params 不生效
    router.push({ path: '/user', params: { userId }}) // -> /user

    八、路由的滚动行为

    定义:

    const router = new VueRouter({
      routes: [...],
      scrollBehavior (to, from, savedPosition) {
        // return 期望滚动到哪个的位置
      }
    })

    使用:

    scrollBehavior (to, from, savedPosition) {
      if (savedPosition) {
        return savedPosition
      } else {
        return { x: 0, y: 0 }
      }
    }
    
    scrollBehavior (to, from, savedPosition) {
      if (to.hash) {
        return {
          selector: to.hash
        }
      }
    }

    十、导航守卫

    全局钩子函数:

    1. beforeEach((to, from, next) => {})
    2. beforeResolve((to, from, next) => {})
    3. afterEach((to, from) => {})

    路由独享钩子函数:

    1. beforeEnter((to, from, next) => {})

    组件内钩子函数:

    1. beforeRouteEnter((to, from, next) => {}),获取不到组件的实例this
    2. beforeRouteUpdate((to, from, next) => {})
    3. beforeRouteLeave((to, from, next) => {})

    路由导航解析流程:

    1. 触发进入其他路由
    2. 调用要离开路由的组件守卫beforeRouteLeave
    3. 调用全局前置守卫beforeEach
    4. 在重用的组件里调用beforeRouteUpdate
    5. 调用路由独享守卫beforeEnter
    6. 解析异步路由组件
    7. 在将要进入的路由组件中调用beforeRouteEnter
    8. 调用全局解析守卫beforeResolve
    9. 导航被确认
    10. 调用全局后置钩子afterEach
    11. 触发DOM更新mounted
    12. 执行beforeRouteEnter守卫中传给next的回调函数
    13. 触发进入其他路由
    14. 调用要离开路由的组件守卫beforeRouteLeave
    15. 调用全局前置守卫beforeEach
    16. 在重用的组件里调用beforeRouteUpdate
    17. 调用路由独享守卫beforeEnter
    18. 解析异步路由组件
    19. 在将要进入的路由组件中调用beforeRouteEnter
    20. 调用全局解析守卫beforeResolve
    21. 导航被确认
    22. 调用全局后置钩子afterEach
    23. 触发DOM更新mounted
    24. 执行beforeRouteEnter守卫中传给next的回调函数

    十二、从服务器获取数据

    导航完成后获取数据:

    先完成导航,然后在接下来的组件生命周期钩子中获取数据。在数据获取期间显示“加载中”之类的指示,示例:

    <template>
      <div class="post">
        <div class="loading" v-if="loading">
          Loading...
        </div>
    
        <div v-if="error" class="error">
          {{ error }}
        </div>
    
        <div v-if="post" class="content">
          <h2>{{ post.title }}</h2>
          <p>{{ post.body }}</p>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      data () {
        return {
          loading: false,
          post: null,
          error: null
        }
      },
      created () {
        // 组件创建完后获取数据,
        // 此时 data 已经被 observed 了
        this.fetchData()
      },
      watch: {
        // 如果路由有变化,会再次执行该方法
        '$route': 'fetchData'
      },
      methods: {
        fetchData () {
          this.error = this.post = null
          this.loading = true
          // replace getPost with your data fetching util / API wrapper
          getPost(this.$route.params.id, (err, post) => {
            this.loading = false
            if (err) {
              this.error = err.toString()
            } else {
              this.post = post
            }
          })
        }
      }
    }</script>

    导航完成前获取数据:

    在导航转入新的路由前获取数据,可以在接下来的组件的beforeRouteEnter守卫中获取数据,当前数据获取成功后调用next方法:

    export default {
      data () {
        return {
          post: null,
          error: null
        }
      },
      beforeRouteEnter (to, from, next) {
        getPost(to.params.id, (err, post) => {
          next(vm => vm.setData(err, post))
        })
      },
      // 路由改变前,组件就已经渲染完了
      // 逻辑稍稍不同
      beforeRouteUpdate (to, from, next) {
        this.post = null
        getPost(to.params.id, (err, post) => {
          this.setData(err, post)
          next()
        })
      },
      methods: {
        setData (err, post) {
          if (err) {
            this.error = err.toString()
          } else {
            this.post = post
          }
        }
      }
    }
    展开全文
  • vue的动态路由

    2019-12-19 12:10:49
    npm install vue-router --save 2.引入路由(main.js) import VueRouter from 'vue-router' Vue.use(VueRouter) 3.配置路由 创建组件引入组件 定义路由 实例化VueRouter 挂载 例子: main.js // The ...

    1.安装

    npm install vue-router --save

    2.引入路由(main.js)

    import VueRouter from 'vue-router'
    Vue.use(VueRouter)

    3.配置路由

    • 创建组件引入组件
    • 定义路由
    • 实例化VueRouter 
    • 挂载

    例子:

    main.js

     // The Vue build version to load with the `import` command
    // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
    import Vue from 'vue'
    import App from './App'
    import router from './router'
    //import VueResource from 'vue-resource'
    import VueRouter from 'vue-router'
    Vue.config.productionTip = false
    //Vue.use(VueResource)
    Vue.use(VueRouter)
    
    //1. 创建组件
    
    import ccc from "./components/ccc.vue";
    import ddd from "./components/ddd.vue";
    import detail from "./components/detail.vue";
    import goods from "./components/goods.vue";
    // 2.配置路由
    
    const routes=[
      {path:'/ccc',component:ccc},
      {path:'/ddd',component:ddd},
      {path:'/detail/:id',component:detail},
      {path:'/goods',component:goods},
      {path:'*',redirect:'/ccc'}
    ]
    
    //3.实例化VueRouter
    const router=new VueRouter({
      routes
    })
    
    //4.挂载路由
    
    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      router,
      render:h=>h(App),
      components: { App },
      template: '<App/>'
    })
    

    ccc.vue

    <template>
      <div>
        我是ccc
        <ul>
          <li v-for="(item,key) in list">
            <router-link :to="'/detail/'+key">{{key}}--{{item}}</router-link>
          </li>
        </ul>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          list: ["000", "111", "222"]
        };
      },
    };
    </script>
    <style scoped>
    </style>

    detail.vue

    <template>
        <div id="detail">
            
        </div>
    </template>
    <script>
    export default {
        data(){
            return{
                
            }
        },mounted(){
            console.log(this.$route.params)//得到点击用户的id,此处是点击用户的key值
        }
    }
    </script>
    <style scoped>
    
    </style>

    页面路径:

    console.log得结果:

     

    ddd.vue

    <template>
        <div>
            我是ddd
            <ul>
          <li v-for="(item,key) in list">
            <router-link :to="'/goods?aid='+key">{{key}}--{{item}}</router-link>
          </li>
        </ul>
        </div>
    </template>
    <script>
    export default {
        data(){
            return{
                list:['商品000','商品111','商品222']
            }
        }
    }
    </script>
    <style scoped>
    
    </style>

    goods.vue

    <template>
        <div id="goods">
            
        </div>
    </template>
    <script>
    export default {
        data(){
            return{
                
            }
        },mounted(){
            console.log(this.$route.query)//获取点击的用户的aid,此处id就是当前点击的key值
        }
    }
    </script>
    <style scoped>
    
    </style>

    页面路径:

    console.log结果:

     

    展开全文
  • 在正常项目中,除了上一章中讲到标准路由输出,更多情况下我们会通过动态路由加JavaScript代码形式来控制页面跳转。 通过JavaScript代码控制方法在上一章最后已有演示,下来我们还是已上一节案例为演示...

    Vue Router部分:

    1. Vue Router基本使用(上篇)
    2. Vue Router动态传参及导航守卫(本篇)

    动态路由

    在正常的项目中,除了上一章中讲到的标准路由输出,更多情况下我们会通过动态路由加JavaScript代码的形式来控制页面的跳转。

    通过JavaScript代码控制的方法在上一章最后已有演示,下来我们还是已上一节的案例为演示进行展示。

    老规矩,翠花上代码:

    1. 将router/index.js中引入动态路由的组件,在path后如下所示:id
     {
        path: "/about/:id",
        name: "About",
        // 路由的懒加载写法,该组件会被延迟加载,推荐这样写
        component: () =>
          import(/* webpackChunkName: "about" */ "../views/About.vue")
      }
    
    1. 将App.vue中代码修改如下
    <template>
      <div id="app">
        <div id="nav">
          <router-link to="/">Home</router-link> |
          <router-link to="'/about' + id">About</router-link>
         
        </div>
        <router-view/>
      </div>
    </template>
    
    <script>
        export default {
          data:function(){
            return {
              id: 123
            }
          },
     </script>
    

    这样之后我们可以看到路由中的id会自动匹配到我们在组建data中传入的id值,这就是动态路由的基本使用,如果想动态获取路由中id值可以通过两种方式:

    1. 通过$route.params.id直接获取
    2. 用一个计算属性获取!
    <script>
        export default {
          data:function(){
            return {
              id: 123
            },
           computed:{
           	Id(){
              // $route谁处于活跃状态就获取谁
              return this.$route.params.id
            }
           }
          },
     </script>
    

    动态路由通过js方式传参

    先说一个这种方式传参的使用场景,一般我们在网站中进行搜索,筛选,排序等操作的时候一般会使用get请求,那么get请求的url要实现这种功能一般会向url中传递参数,形式如下所示:

    https://www.baidu.com/s?wd=vue
    

    问号后边的wd=vue就是url种传的参数!

    • 普及个知识点,url的构成:

    一个url可以由七个部分构成:协议部分(http/https),域名部分(www.baidu.com), 端口部分(:8000),虚拟目录部分(/news/),文件部分(从域名后的最后一个“/”开始到“?”为止),锚部分(从“#”开始到最后),参数部分(从“?”开始到“#”为止)。
    具体大家可自行了解!

    1. 在vue中构造这种get请求一般是通过,path搭配query (类似get),可以通过$route.query获取传递的参数!

    老规矩,翠花上代码:

    <!--App.vue-->
    
    <h1>代码跳转</h1>
    <button @click="ProfileClick">Profile</button>
    
    <script>
    export default {
      methods: {
        ProfileClick(){
          this.$router.push({
            path: '/profile',
            query: {
              name: 'vue',
              age: 18,
              height: 10
            }
          })
        }
      },
    }
    </script>
    

    点击ProfileClick事件会跳转至如http://www.xxx.com/profile?name=vue&age=18&height=10形式的地址!

    1. 在vue中构造这种post请求一般是通过,name搭配params (类似post)

    使用场景一般是我们向post接口传送数据,就可以使用这种方式向接口传递参数!

    老规矩,翠花上代码:

    <!--App.vue-->
    
    <h1>代码跳转</h1>
    <button @click="UserClick">Profile</button>
    
    <script>
    export default {
      methods: {
        ProfileClick(){
          this.$router.push({
            name: 'user',
            query: {
              id: 12,
              name: 'vue',
              desc: '学习vue'
            }
          })
        }
      },
    }
    </script>
    

    通过这种方式可以向post请求接口推送数据,其传递的参数可以通过$route.params获取!

    嵌套路由

    如果一个大的路由下边有小的分支路由,与创建路由的原则相一致,一个路由对应一个组件,子路由也得一一对应相关组件,之后再把注册的路由通过<router-link>引入到父路由的组件中。

    老规矩,翠花上代码!

    // router/index.js
    // 引入子组件,自己提前在views文件夹下创建页面组件!
    const Home = () => import('../views/Home.vue')
    const HomeNews = () => import('../views/HomeNews')
    const HomeMessage = () => import('../views/HomeMessage')
    
    const routes = [
     {
        path: '/',
        name: 'home',
        component: Home,
        // 子组件
        children: [
        // 跳转链接
          {
            path: '/',
            redirect: '/home/news'
          },
          {
          // path路径要与引用到组件的一致
            path: '/home/news',
            component: HomeNews
          },
          {
            path: '/home/message',
            component: HomeMessage
          }
        ]
      },
    ]
    

    将子路由引入到父路由的组件中。

    <router-link to="/home/news">news</router-link> | 
    <router-link to="/home/message">message</router-link>
    </router-view>
    

    导航守卫

    导航守卫的意思是,监听每一个路由的跳转过程,,然后提供了一些钩子让你有机会在路由跳转的过程中植入相关信息,导航守卫分为三个部分即全局导航守卫、路由导航守卫和组件守卫。

    全局导航守卫

    全局导航守卫分为以下三类,建议大家先去看下vue官网关于这块,有个基础的了解!

    1. 全局前置守卫:

    • router.beforeEach,在路由跳转时回调!
    router.beforeEach((to, from, next) => {
    	// 如果用户未能验证身份,则 `next` 会被调用到登录页
      if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' })
      else next()
    })
    

    2. 全局解析守卫

    router.beforeResolve这和 router.beforeEach 类似,区别是在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用。

    3. 全局后置钩子

    • router.afterEach 跳转完回调!

    路由独享守卫

    你可以在路由配置上直接定义 beforeEnter 守卫:

    const router = new VueRouter({
      routes: [
        {
          path: '/foo',
          component: Foo,
          beforeEnter: (to, from, next) => {
            // ...
          }
        }
      ]
    })
    

    这些守卫与全局前置守卫的方法参数是一样的。

    组件内守卫

    最后,你可以在路由组件内直接定义以下路由导航守卫:

    • beforeRouteEnter
    beforeRouteEnter (to, from, next) {},
    

    在渲染该组件的对应路由被 confirm 前调用,不!能!获取组件实例 this,因为当守卫执行前,组件实例还没被创建。不过,你可以通过传一个回调给 next来访问组件实例。在导航被确认的时候执行回调,并且把组件实例作为回调方法的参数。

    beforeRouteEnter (to, from, next) {
      next(vm => {
        // 通过 `vm` 访问组件实例
      })
    }
    

    对于 beforeRouteUpdate 和 beforeRouteLeave 来说,this 已经可用了,所以不支持传递回调,因为没有必要了。

    • beforeRouteUpdate (2.2 新增)
      在当前路由改变,但是该组件被复用时调用,举例来说,对于一个带有动态参数的路径,/foo/:id,在 /foo/1/foo/2 之间跳转的时候,由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。可以访问组件实例 this!
    beforeRouteUpdate (to, from, next) {
      // just use `this`
      this.name = to.params.name
      next()
    }
    
    • beforeRouteLeave
      导航离开该组件的对应路由时调用,可以访问组件实例 this,这个离开守卫通常用来禁止用户在还未保存修改前突然离开。该导航可以通过 next(false) 来取消。
    beforeRouteLeave (to, from, next) {
      const answer = window.confirm('Do you really want to leave? you have unsaved changes!')
      if (answer) {
        next()
      } else {
        next(false)
      }
    }
    

    在router/index.js中修改并添加相关信息如下:

    
    // router/index.js
    
    // 01. 在导航路由中添加 meta对象 元数据
    {
        path: '/home/message',
        name: 'message',
        component: HomeMessage,
        meta: {
            title: '消息'
        }
    }
    
    // 02. 添加如下方法
    // 全局导航守卫,router是我们最开始new 出来的一个对象
    
    // 全局导航守卫【前置钩子,跳转时回调】
    router.beforeEach((to, from, next) => {
      // 从from跳转到to
      document.title = to.matched[0].meta.title
      console.log('+++++++++')
      next()
      
    })
    
    // 后置钩子,跳转完回调
    router.afterEach((to, from) => {
      // to and from are both route objects.
      console.log('----------')
    })
    

    完整的导航解析流程

    1. 导航被触发。
    2. 在失活的组件里调用 beforeRouteLeave 守卫。
    3. 调用全局的 beforeEach 守卫。
    4. 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)。
    5. 在路由配置里调用 beforeEnter。
    6. 解析异步路由组件。
    7. 在被激活的组件里调用 beforeRouteEnter。
    8. 调用全局的 beforeResolve 守卫 (2.5+)。
    9. 导航被确认。
    10. 调用全局的 afterEach 钩子。
    11. 触发 DOM 更新。
    12. 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入。

    感谢您的阅读,如果对您有帮助,欢迎关注"CRMEB"。码云上有我们开源的商城项目知识付费项目JAVA版全开源商城系统,学习研究欢迎使用,老铁顺手点个star呗,老板奖励五毛,分你两毛五,😂😂关注我们保持联系!

    展开全文
  • 登录后我们拿到路由动态路由,后端传数据可能为这个 { path: '/index', meta: { title: '首页', icon: 'icon-shouye', ...
  • 在router下index.js文件中改相应路由 {path:'/index/indexDetails/:id',name:'Idetails',component:indexDetails} 然后 &lt;div class="tex" v-for="t in arr"&gt;//arr是一个...
  • 一开始我想的思路就有问题,总想着用动态的路由对应唯一面包屑,这是不对的,应该用动态的路由,对应动态的面包屑,只要相互有对应的动态值就可了。以我自己做的一个地图下钻到列表为例, 需求:再点击一个地图时,...
  • 一 login.vue // 用户登录 handleLogin(nameForm) { this.$refs[nameForm].validate(valid =&gt; { // 数据传递规则验证 if (valid) { let smt= dataRoutes; // const _this=...
  • 主要介绍了vue 实现动态路由的方法,文中示例代码非常详细,帮助大家更好理解和学习,感兴趣朋友可以了解下
  • title: VueRouter 动态路由配置坑 tags: router dynamic VueRouter 动态路由配置坑 最大坑是在配置3级侧边栏动态路由。我们必须在二级路由界面添加<router-view />。这个问题耗时5个小时,最后还是...
  • 添加菜单接口 及 菜单状态管理根据得到菜单生成动态路由根据 vuex 中暂存菜单生成侧边菜单栏为什么要使用动态路由?一般系统中,都会有不同权限操作人员,这时候他们看到页面也将会不同,因此都需要根据...
  • 什么叫动态路由呢?顾名思义就是程序员眼中硬编码与非硬编码区别。还是拿之前静态路由来做对比import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const globalRoutes = [ {path: '/...
  • P13.7-VueRouter动态路由

    2020-12-25 17:11:33
    P13.7-VueRouter动态路由 文章目录P13.7-VueRouter动态路由1.概述2.配置动态路由2.1.创建用户组件2.2.配置动态路由2.3.使用动态路由2.4.预览效果3.$route获取当前活跃路由参数 1.概述 在某些情况下,一个页面...
  • Vue 动态路由的实现

    2021-03-31 13:04:02
    我们在日常开发中,经常会遇到项目需要权限管理的,当项目越来越大的时候,我们还是非常需要做动态路由这一块的,现在我们一起来了解一下如果制作vue的动态路由; 1.基础路由的配置 // router.config.js import { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,744
精华内容 1,497
关键字:

vue的动态路由

vue 订阅