Vue-Router

本文深入讲解Vue-Router的使用,包括路由组件、导航组件、渲染组件等核心概念,以及编程式导航、守卫和钩子的详细应用。通过具体代码示例,帮助读者理解如何在Vue.js中创建和管理单页应用的路由。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vue-Router是前台路由组件,Vue.js + Vue Router 创建单页应用,将自定义组件映射到Vue-Router中,由Vue-Router来渲染页面。
Vue-Router相关API参考https://router.vuejs.org/zh/api

<router-link to='/test'/>                         <!-- 路由组件的导航组件(用to属性设置跳转) -->
<router-view/>                                    <!-- 路由组件的渲染组件 -->


this.$router                                      <!-- 访问路由器 -->
this.$route                                       <!-- 访问当前路由 -->
//路由组件根据网页请求路径来判断用path导航路径对应的组件渲染router-view
const router = new VueRouter({                    //VueRouter是导入Vue-Router的别名 -->
    routes: [
        //path导航路径,component自定义组件(页面节点类似div,注意只能有一个根节点)
        {path: '/:name/one', component: { template: '<div>foo</div>' }},    //动态路径/*/one
        {path: '/:name/two', component: { template: '<div>{{$route.params.name}}</div>' }},   //$route获取当前路由
        {path: '/redirect/test', redirect: '/redirect_test'},                //redirect重定向(可以是路径、路由器和方法)
        {path: '/alias/test', component: { template: '<div>alias</div>' }, alias: '/alias_test'}    //alias别名,功能效果不变,只替换URL显示
        {
            path: '/bar/three', 
            components: {                          //当一个导航组件对应多个渲染组件时,自定义组件别名与渲染组件name属性一一对应
                a: {template: '<div>a template</div>'},
                b: {template: '<div>b template</div>'}
            },
            children: [                            //嵌套路由组件中的子路由(可多层嵌套)
                {path: '/son', component: { template: '<div>son</div>'}}
            ]
        }
    ]
})


//编程式导航(通常在Vue实例方法中使用)
this.$router.push(location, onComplete?, onAbort?)        //路由导航方法(<router-link>导航组件后台调用的就是该方法)
location: 导航路径,通常直接使用字符串定义路径或使用name、params、path和query参数来搭配使用
onComplete: 导航成功时调用该方法(function)
onAbort: 导航失败时调用该方法(function)

this.$router.replace(location, onComplete?, onAbort?)     //与push方法功能相同,区别在与该方法会替换当前历史记录

this.$router.go(n)                                        //历史记录前进或者后退(正负数)


const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {                   //全局前置守卫(当一个导航触发时,全局前置守卫按照创建顺序调用)
    //to            将进入的目标路由对象
    //from          正要离开的路由对象
    //next          页面跳转方法( next('/') 或 next({path: '/', name: 'abc'})可以定义router-link中的所有属性 )
})
router.beforeResolve((to, from, next) => {                //全局解析守卫(导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用)
})
router.afterEach((to, from) => {                          //全局后置钩子(当一个导航触发后,全局后置钩子按照创建顺序调用,无法改变导航本身)
})


beforeEnter: (to, from, next) => {                        //路由独享前置守卫
}


beforeRouteEnter (to, from, next) {                       //组件守卫
    // 在渲染该组件的对应路由被 confirm 前调用(不能获取组件实例`this`)
},
beforeRouteUpdate (to, from, next) {                      //组件守卫
    // 在当前路由改变,但是该组件被复用时调用(可以访问组件实例 `this`)
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候调用
},
beforeRouteLeave (to, from, next) {                       //组件守卫
    // 导航离开该组件的对应路由时调用(可以访问组件实例 `this`)
}
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 这个HTML文件是一个专门设计的网页,适合在告白或纪念日这样的特殊时刻送给女朋友,给她带来惊喜。它通过HTML技术,将普通文字转化为富有情感和创意的表达方式,让数字媒体也能传递深情。HTML(HyperText Markup Language)是构建网页的基础语言,通过标签描述网页结构和内容,让浏览器正确展示页面。在这个特效网页中,开发者可能使用了HTML5的新特性,比如音频、视频、Canvas画布或WebGL图形,来提升视觉效果和交互体验。 原本这个文件可能是基于ASP.NET技术构建的,其扩展名是“.aspx”。ASP.NET是微软开发的一个服务器端Web应用程序框架,支持多种编程语言(如C#或VB.NET)来编写动态网页。但为了在本地直接运行,不依赖服务器,开发者将其转换为纯静态的HTML格式,只需浏览器即可打开查看。 在使用这个HTML特效页时,建议使用Internet Explorer(IE)浏览器,因为一些老的或特定的网页特效可能只在IE上表现正常,尤其是那些依赖ActiveX控件或IE特有功能的页面。不过,由于IE逐渐被淘汰,现代网页可能不再对其进行优化,因此在其他现代浏览器上运行可能会出现问题。 压缩包内的文件“yangyisen0713-7561403-biaobai(html版本)_1598430618”是经过压缩的HTML文件,可能包含图片、CSS样式表和JavaScript脚本等资源。用户需要先解压,然后在浏览器中打开HTML文件,就能看到预设的告白或纪念日特效。 这个项目展示了HTML作为动态和互动内容载体的强大能力,也提醒我们,尽管技术在进步,但有时复古的方式(如使用IE浏览器)仍能唤起怀旧之情。在准备类似的个性化礼物时,掌握基本的HTML和网页制作技巧非常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值