资讯专栏INFORMATION COLUMN

20190613-Vue Router 基础(一)

andong777 / 1350人阅读

摘要:那么这个时候,我们需要在中,加载配置三个组件为复数。传递参数不需要在中进行配置获取参数其他的写法带查询参数,下面的结果为拼到中

什么是 Vue Router?

Vue Router是Vue.js的官方路由管理器,可以控制Vue单页应用的路由。

如何快速上手? vue-cli脚手架自带Vue-Router依赖
新版的vue-cli脚手架中,默认default模式没有router依赖,请选择Manually select features后添加Router依赖后,选择History模式。

vue-cli官网

在HTML进行路由设置

    
    新建分类
    

我们可以利用标签来控制单页应用的跳转路径

使用单文件组件内进行路由设置

    新建分类


export default {
  methods: {
    onCreate() {
      this.$router.push({
        path: "/categories/create"
      })
    }
  }
}

我可以使用this.$router方法进行操作路由

执行了push或跳转操作还远远不够,我们还在router.js上进行路由(目录)添加你需要对应标准的地址以及地址包含component组件,不然编译器不知道你要跳转的实质内容是什么~
router.js配置
// 按需加载你需要的依赖

import Vue from "vue"
import Router from "vue-router"
import Main from "./views/main.vue"
import CategoryEdit from "./components/categoryEdit.vue"

Vue.use(Router)

export default new Router({
  mode: "history",   // history模式
  base: process.env.BASE_URL, // 环境内部基础地址
  routes: [
    {
      path: "/", // 当地址在根目录的时候,跳转到Main的组件,这就是首页
      name: "main",
      component: Main,
      children: [
        {
          path: "/categories/create",// 它是Main的子路由,默认在首页 调用CategoryEdit组件
          name: "categoryCreate",
          component: CategoryEdit
        },
        {
          path: "/categories/create", // 它是Main的子路由, 当地址转到/categories/create上,则调用CategoryEdit组件
          name: "categoryCreate",
          component: CategoryEdit
        }
      ]
    }
  ]
})
嵌套路由

刚刚在上面我们提高了「子路由」,然后我们开始了解下嵌套路由

/user/foo/profile                     /user/foo/posts
+------------------+                  +-----------------+
| User             |                  | User            |
| +--------------+ |                  | +-------------+ |
| | Profile      | |  +------------>  | | Posts       | |
| |              | |                  | |             | |
| +--------------+ |                  | +-------------+ |
+------------------+                  +-----------------+

这是官网的栗子,我们看来下更直观。

我们要做的是改变这个网页的子路由内容组件人,让我们看下代码吧~


    
      
        
          
          
            新建分类
            分类列表
          
        
      
    
    
      
      
      
        
        
        
      
    


export default {
  methods: {
    onCreate() {
      this.$router.push({
        path: "/categories/create"
      })
    }
  }
}

当我们在进行执行 $this.router.push 或者 跳转的时候,
我们可以看到,push的路径是「/categories/create」,回到router.js代码上,我们可以看到,/categories/create是在/根目录下的children里面,这就说明它是根目录的子路由,子路由在子路由标签上进行渲染。

我们还可以利用的name属性进行跳转制定的子路由容器
如图上,父容器HTML中有3个route视图:

header

side

content

我们需要这三个都是动态的,都是需要根据需求加载不同的内容。



那么这个时候,我们需要在router.js中,加载配置三个组件

components为复数。
import Header from "./components/header.vue"
import Side from "./components/side.vue"
import Content from "./components/content.vue"
import CategoryEdit from "./components/categoryEdit.vue"
import CategoryList from "./components/categoryList.vue"

 routes: [
    {
      path: "/",
      name: "main",
      components: {
        efault: Header,
        a: Side,
        b: Content
      },
      children: [
        {
          path: "/categories/create/:userid",
          name: "categoryCreate",
          component: CategoryEdit
        },
        {
          path: "/",
          name: "categoryList",
          component: CategoryList
        }
      ]
    }
  ]
动态路由分配(如何给函数添加参数以及如何保证跳转的唯一性)
在绝大分部情况下,我们需要利用同一个组件加载不同的数据内容(比如详情、用户表信息等等),那我们怎么保证跳转的唯一性呢?

这时候,我们需要利用路由命名方法

1.router.js 配置对应路径以及名字
export default new Router({
  mode: "history",
  base: process.env.BASE_URL,
  routes: [
    {
      path: "/",
      name: "main",
      component: Main,
      children: [
        {
          path: "/categories/create/:userid", // 这是userid就是参数名
          name: "categoryCreate",
          component: CategoryEdit
        },
        {
          path: "/",
          name: "categoryList",
          component: CategoryList
        }
      ]
    }
  ]
})
2.路由容器,执行跳转操作
  onCreate() {
      this.$router.push({
        name: "categoryCreate",
        params: { userid: 123 }
      })
    }
3.点击跳转,则地址变成
http://localhost:8080/categories/create/123
4.在子路由容器中获取到参数名字和内容
mounted() {
    // 注意是this.$route,是路由对象
    console.log("你获取的参数是:" + this.$route.params); 
},

打印出来的数据

{
   userid: "123"
}

关于命名路由,还有其他的写法

// HTML上
User

// .vue组件的其他写法
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
GET请求-路由组件传参数

这个和一般的url上拼接参数,获取一样,只不过router提供一个设置和获取方法。

http://localhost:8080/categories/create/123?dataval=admin
传递参数
    this.$router.push({
        name: "categoryCreate?ad=11",
        params: { 
          userid: 123 
        },
        query: {
          dataval: "admin"
        }
      })
不需要在router.js中进行配置
获取参数
let val = this.$route.query.dataval; // admin
其他的写法

Register


this.$router.push({path: `/categories/create/${userid}?admin=tre`});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104694.html

相关文章

  • vue-router 基础知识点

    摘要:路由模块的本质就是建立起和页面之间的映射关系。模式的原理是事件监测值变化,可以在对象上监听这个事件。这两个方法应用于浏览器记录栈,在当前已有的基础之上,它们提供了对历史记录修改的功能。 vue-router 这里的路由并不是指我们平时所说的硬件路由器,这里的路由就是SPA(单页应用)的路径管理器。再通俗的说,vue-router就是WebApp的链接路径管理系统。vue-router是...

    ningwang 评论0 收藏0
  • Vue-router(vue路由基础详解)

    摘要:你可以在创建实例的时候,在配置中给某个路由设置名称。如果没有设置名字,那么默认为。 Vue.js路由(Vue-router) 安装 直接引入 vue-router下载链接https://unpkg.com/vue-router/... npm下载 npm install vue-router 如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能:在你的文...

    JasinYip 评论0 收藏0
  • vue 路由基础

    摘要:路由基础使用插件处理路由,路由是开发单页应用必须掌握的知识。什么是是官方提供前端路由插件,借助它我们实现可以基于路由和组件的单页面应用。子路由前面不能有。命名路由路由对象中的属性是路由的名字,可用该名字指定路径。 vue 路由基础 vue 使用 vue-router 插件处理路由,路由是开发单页应用必须掌握的知识。 什么是 vue-router? (1)vue-router 是 Vue...

    mingde 评论0 收藏0
  • [ 起学React系列 -- 11 ] React-Router4 (1)

    摘要:中的包中的包主要有三个和。的理念上面提到的理念是一切皆组件以下统一称组件。从这点来说的确方便了不少,也迎合一切皆组件的理念。组件是中主要的组成单位,可以认为是或的路由入口。将该标示为严格匹配路由。的属性追加一条。 2019年不知不觉已经过去19天了,有没有给自己做个总结?有没有给明年做个计划?当然笔者已经做好了明年的工作、学习计划;同时也包括该系列博客剩下的博文计划,目前还剩4篇:分别...

    tinysun1234 评论0 收藏0
  • Node.js使用Koa搭建 基础项目

    摘要:目录一创建项目二配置路由三静态资源四模板引擎五结语是由原班人马打造的超轻量服务端框架与相比,除了自由度更高,可以自行引入中间件之外,更重要的是使用了,从而避免了回调地狱不过也是因为代码升级,所以需要以上的环境一创建项目手动创建一个项目目录, 目录 一、创建项目二、配置路由三、静态资源四、模板引擎五、结语 Koa 是由 Express 原班人马打造的超轻量服务端框架与 Express 相...

    BingqiChen 评论0 收藏0

发表评论

0条评论

andong777

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<