Vue.js:使用Vue-Router 2实现路由功能介绍

发布时间 - 2026-01-10 23:13:16    点击率:

注意:vue-router 2只适用于Vue2.x版本,下面我们是基于vue2.0讲的如何使用vue-router 2实现路由功能。

推荐使用npm安装。

npm install vue-router

一、使用路由

在main.js中,需要明确安装路由功能:

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'
Vue.use(VueRouter)
//1.定义组件,这里使用从其他文件import进来
import index from './components/index.vue'
import hello from './components/hello.vue'
//2.定义路由
const routes = [
{ path: '/index', component: index },
{ path: '/hello', component: hello },
]
//3. 创建 router 实例,然后传 `routes` 配置
const router = new VueRouter({
 routes
})
//4. 创建和挂载根实例。通过 router 配置参数注入路由,从而让整个应用都有路由功能
const app = new Vue({
  router,
 render: h => h(App)
}).$mount('#app')

经过上面的配置之后呢,路由匹配到的组件将会渲染到App.vue里的<router-view></router-view>

那么这个App.vue里应该这样写:

<template>
 <div id="app">
      <router-view></router-view>
 </div>
</template>

index.html里呢要这样写:

<body>
<div id="app"></div>
</body>

这样就会把渲染出来的页面挂载到这个id为app的div里了。

二、重定向  redirect

const routes = [
{ path: '/', redirect: '/index'},   // 这样进/ 就会跳转到/index
{ path: '/index', component: index }
]

三、嵌套路由

const routes = [
{ path: '/index', component: index,
children: [
{ path: 'info', component: info}
] }
]

通过/index/info就可以访问到info组件了

四、懒加载

const routes = [
{ path: '/index', component: resolve => require(['./index.vue'], resolve) },
{ path: '/hello', component: resolve => require(['./hello.vue'], resolve) },
]

通过懒加载就不会一次性把所有组件都加载进来,而是当你访问到那个组件的时候才会加载那一个。对于组件比较多的应用会提高首次加载速度。

五、<router-link>

在vue-router 1中,使用的是<a v-link="{path:'/index'}"></a>

在vue-router 2中,使用了<router-link></router-link>替换1版本中的a标签

<!-- 字符串 -->
<router-link to="home">Home</router-link>
<!-- 渲染结果 -->
<a href="home" rel="external nofollow" >Home</a>

<!-- 使用 v-bind 的 JS 表达式 -->
<router-link v-bind:to="'home'">Home</router-link>

<!-- 不写 v-bind 也可以,就像绑定别的属性一样 -->
<router-link :to="'home'">Home</router-link>

<!-- 同上 -->
<router-link :to="{ path: 'home' }">Home</router-link>

<!-- 命名的路由 -->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>

<!-- 带查询参数,下面的结果为 /register?plan=private -->
<router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>

六、路由信息对象

1.$route.path

字符串,对应当前路由的路径,总是解析为绝对路径,如 "/foo/bar"。

2.$route.params

一个 key/value 对象,包含了 动态片段 和 全匹配片段,如果没有路由参数,就是一个空对象。

3.$route.query

一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象。

4.$route.hash

当前路由的 hash 值 (不带 #) ,如果没有 hash 值,则为空字符串。

5.$route.fullPath

完成解析后的 URL,包含查询参数和 hash 的完整路径。

6.$route.matched

一个数组,包含当前路由的所有嵌套路径片段的 路由记录 。路由记录就是 routes 配置数组中的对象副本(还有在 children 数组)。

综合上述,一个包含重定向、嵌套路由、懒加载的main.js如下:

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
Vue.use(VueRouter)
const router = new VueRouter({
 routes:[
  { path: '/', redirect: '/index' },
  { path: '/index', component: resolve => require(['./components/index.vue'], resolve),
children:[
     { path: 'info', component: resolve => require(['./components/info.vue'], resolve) }
    ]
  },
  { path: '/hello', component: resolve => require(['./components/hello.vue'], resolve) },
 ]
})
const app = new Vue({
 router,
 render: h => h(App)
}).$mount('#app')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue  # router  # 路由配置  # Vue-Router路由功能  # Vue-Router  # Vue Router路由守卫超详细介绍  # Vue Router路由hash模式与history模式详细介绍  # vue-router路由简单案例介绍  # Vue Router的介绍与引入功能详解  # 加载  # 如果没有  # 路由功能  # 的是  # 重定向  # 就会  # 都有  # 就像  # 首次  # 将会  # 则是  # 才会  # 当你  # 推荐使用  # 适用于  # 会把  # 不带  # 比较多  # 则为  # 绑定 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Android Socket接口实现即时通讯实例代码  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  如何基于云服务器快速搭建网站及云盘系统?  长沙企业网站制作哪家好,长沙水业集团官方网站?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  原生JS获取元素集合的子元素宽度实例  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  如何快速使用云服务器搭建个人网站?  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  文字头像制作网站推荐软件,醒图能自动配文字吗?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何挑选最适合建站的高性能VPS主机?  昵图网官网入口 昵图网素材平台官方入口  Laravel如何使用Blade组件和插槽?(Component代码示例)  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  免费视频制作网站,更新又快又好的免费电影网站?  Python进程池调度策略_任务分发说明【指导】  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  如何在阿里云虚拟主机上快速搭建个人网站?  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  如何有效防御Web建站篡改攻击?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Swift中switch语句区间和元组模式匹配  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Laravel如何处理异常和错误?(Handler示例)  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何在IIS服务器上快速部署高效网站?  无锡营销型网站制作公司,无锡网选车牌流程?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  制作公司内部网站有哪些,内网如何建网站?  Laravel如何为API生成Swagger或OpenAPI文档  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  高端智能建站公司优选:品牌定制与SEO优化一站式服务  米侠浏览器网页背景异常怎么办 米侠显示修复  实例解析angularjs的filter过滤器  JavaScript如何操作视频_媒体API怎么控制播放  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  如何构建满足综合性能需求的优质建站方案?  创业网站制作流程,创业网站可靠吗?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  如何快速搭建个人网站并优化SEO?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Laravel如何使用模型观察者?(Observer代码示例)  如何注册花生壳免费域名并搭建个人网站?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)