经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
详解Vue-Router的安装与使用
来源:jb51  时间:2021/6/21 9:35:19  对本文有异议

安装

1.在已有Vue项目中手动安装vue-router

  1. npm install --save vue-router

2.使用vue-cli创建自带vue-router的新项目
空格选择/取消 a全选 i反选

  1. vue create project_name
  2. #Vue 会询问你使用哪种配置
  3. Default ([Vue 2] babel, eslint)
  4. Default (Vue 3 Preview) ([Vue 3] babel, eslint)
  5. Manually select features
  6.  
  7. #请选择 Manually select features,Vue会询问你当前项目需要哪些配置
  8.  
  9. Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection)
  10.  
  11. >(*) Choose Vue version
  12. (*) Babel
  13. ( ) TypeScript
  14. ( ) Progressive Web App (PWA) Support
  15. ( ) Router
  16. ( ) Vuex
  17. ( ) CSS Pre-processors
  18. (*) Linter / Formatter
  19. ( ) Unit Testing
  20. ( ) E2E Testing
  21. #请将Router 选中,后面一系列的询问按照实际情况进行选择就好

路由的基础配置

  1. 如果选择了第一种安装方式(手动安装),需要手动在src文件夹下新建一个名为router的文件夹并新建index.js文件
  2. 如果选择了第二种安装方式(自定义安装),不用自己进行配置,新建项目完毕后就可以直接使用了

将Router安装到Vue中

如果需要让当前Vue实例支持路由功能.需要在Vue实例化时将VueRouter的实例对象注入到Vue实例配置选项router中。(手动安装)

  1. // src/router/index.js
  2.  
  3. import Vue from 'vue' // 引入Vue
  4. import VueRouter from 'vue-router' // 引入VueRouter
  5.  
  6. // Vue支持VueRouter
  7. Vue.use(VueRouter)
  8.  
  9. let router = new VueRouter() // 初始化VueRouter
  10.  
  11. new Vue({
  12.   router // 将VueRouter的实例对象配置到Vue实例化配置对象的router选项中
  13. }).$mount('#app')

main.js中引用

  1. // src/main.js
  2.  
  3. import router from './router'
  4.  
  5. new Vue({
  6. router,
  7. render: h => h(App)
  8. }).$mount('#app')

Router的相关配置

属性名 类型 描述
routes Array 当前Router中所有路由配置
modeString 可选值: "hash" / "history" 默认值'hash' 该模式下路由使用hash保证路由与视图一致history 模式使用h5新增 window.history 实现路由与视图一致
linkActiveClass String 默认值: "router-link-active" 全局配置  默认的激活的 class
linkExactActiveClass String 默认值: "router-link-exact-active" 全局配置  默认的精确激活的 class。

注意 严格匹配link标签to路由路径必须全等于当前浏览器的url,非严格匹配当前浏览器url可以为当前link的子路由。

例子

  1. to="/home" url="/home/user" 非严格匹配
  2. to="/home" url="/home/user/10086" 非严格匹配
  3. to="/home" url="/home" 严格匹配
  4. to="/" url="/order" / 是所有路由的根路由,所以他们非严格匹配

Router.routes 的相关配置

  1. {
  2. path: string,
  3. component?: Component, // 当前路由匹配时显示的路由组件
  4. name?: string, // 命名路由
  5. redirect?: string | Location | Function, // 路由重定向
  6. props?: boolean | Object | Function, //
  7. alias?: string | Array<string>, // 路由别名
  8. children?: Array<RouteConfig>, // 嵌套路由
  9. beforeEnter?: (to: Route, from: Route, next: Function) => void, //路由守卫
  10. caseSensitive?: boolean, // 匹配规则是否大小写敏感?(默认值:false)
  11. }

实现一个简单的路由

1.配置路由

  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. import App from './App.vue'
  4. import Home from './views/Home'
  5. import Order from './views/Order'
  6. import User from './views/User'
  7.  
  8. // Vue支持VueRouter
  9. Vue.use(VueRouter)
  10.  
  11. let router = new VueRouter({
  12.   routes: [
  13.     {
  14.       path: '/home',
  15.       component: Home
  16.     },
  17.     {
  18.       path: '/order',
  19.       component: Order
  20.     },
  21.     {
  22.       path: '/user',
  23.       component: User
  24.     }
  25.   ]
  26. })
  27.  
  28. new Vue({
  29.   render: h => h(App),
  30.   router
  31. }).$mount('#app')

2. 在组件中实现路由

VueRouter给Vue提供了两个组件

  • router-link
  • router-view

1. router-link 用于实现路由的跳转组件:该组件支持的属性

to: string | location 当用户点击该组件时就会跳转至to指定的路由

  1. // 导航指定的url
  2. <router-link to="/home">主页</router-link>
  3. <router-link to="/order">订单</router-link>
  4. <router-link to="/user">用户</router-link>
  5. /* 导航指定的location
  6. vue router中location对象的常用属性{
  7. path:'/', //指定跳转路由的路径
  8. hash:'#top' // 指定跳转路由的哈希值
  9. name: 'Home', // 指定跳转的具名路由的name值
  10. params: {}, // 指定跳转的路由传递params对象
  11. query: {} // 指定跳转的路由传递query键值对
  12. }
  13. */
  14. <router-link :to="{path:'/user'}">user</router-link>
  15. // 使用location进行页面跳转时,当前location的params属性无法传递给路由组件的
  16. <router-link :to="{path:'/user',hash:'#top',params:{id:1,name:'小明'}}">user</router-link>
  17. // 使用name路由导航,可以向任何具名路由传递params
  18. <router-link :to="{name:'User',hash:'#top',params:{id:1,name:'小明'}}">user</router-link>
  19. // query支持 name导航和path导航,不推荐传递对象属性时使用query传参
  20. <router-link :to="{name:'User',hash:'#top',query:{id:1,name:'小明'}}">user</router-link>

replace: bool 当该属性为真时,路由的跳转将以替换的形式跳转到下一个页面(下一个路由会把当前浏览器历史记录栈中的url替换成将要跳转的路由),默认值为false

  1. // 使用替换的形式跳转路由
  2. <router-link class="tab-item" replace to="/user">用户</router-link>

append: bool 当该属性为真时,当前路由如果是相对路径(路径没有/开头)路由的跳转将会基于浏览器url进行下一级的跳转,默认值为false

  1. // 如果当前浏览器url /order
  2. // 点击 Gec 会跳转到 /order/gec
  3. <router-link  to="gec" append>Gec</router-link>
  4. // 点击 Gec1 因为Gec1的to不是相对路径 append就会无效,路由会跳转到 /gec
  5. <router-link  to="/gec" append>Gec1</router-link>
  6. // 点击 Gec2 没有append 会跳转到 /gec
  7. <router-link  to="gec">Gec2</router-link>

tag: string 指定当该router-link标签最终以什么DOM元素渲染到页面上,默认值是a

  1. // 将router-link以span元素渲染到页面上
  2. <router-link tag="span" class="tab-item" to="/">主页</router-link>

active-class: string 指定当前router-link元素,如果与浏览器url非严格匹配时class名。默认值是VueRouter实例化时 linkActiveClass 指定值

  1. // 当前router-link非严格匹配时class名为aaaa
  2. <router-link  active-class="aaaa" to="/order">订单</router-link>

event: string | Array<string> 指定当前router-link元素,声明可以用来触发导航的事件。可以是一个字符串或是一个包含字符串的数组。默认值是click

  1. // 双击 和 点击都能触发当前元素的路由跳转
  2. <router-link :event="['dblclick','click']"  to="/">主页</router-link>

2. router-view 根据当前VueRouter的配置,当路由路由路径发生改变时渲染对应的路由视图组件

router-view 组件是一个 functional 组件,渲染路径匹配到的视图组件。 渲染的组件还可以内嵌自己的 router-view,根据嵌套路径,渲染嵌套组件。 其他属性 (非 router-view 使用的属性除name) 都直接传给渲染的组件,很多时候,每个路由的数据都是包含在路由参数中。

因为它也是个组件,所以可以配合 transition 和 keep-alive 使用。如果两个结合一起用,要确保在内层使用 keep-alive:

  1. <transition name="fade">
  2. <keep-alive>
  3. <router-view></router-view>
  4. </keep-alive>
  5. </transition>

以上就是详解Vue-Router的安装与使用的详细内容,更多关于Vue-Router的安装与使用的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号