vue2路由实例(基本用法)

              Vue-router 是给Vue.js 提供路由管理的插件,利用hash 的变化控制动态组件的切换。以往页面间跳转都由后端MVC 中Controller 层控制,通过<a> 标签的href 或者直接修改location.href,我们会向服务端发起一个请求,服务端响应后根据所接收到的信息去获取数据和指派对应的模板,渲染成HTML 再返回给浏览器,解析成我们可见的页面。Vue.js +Vue-router 的组合将这一套逻辑放在了前端去执行,切换到对应的组件后再向后端请求数据,填充进模板来,在浏览器端完成HTML 的渲染。这样也有助于前后端分离,前端不用依赖于后端的逻辑,只需要后端提供数据接口即可。

引用方式

在HTML 中直接用script 标签引入即可,例如:

<script  src="<%=request.getContextPath()%>/lib/vue-router.js"></script>
注意:vue的引入要放在vue-router的之前,不然vue-router会不起作用。

基本用法:
    本文章将结合boostrap中的样式来做案例,实现导航条,点击实现不同的页面。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>routerTest1</title>
    <c:import url="importFile.jsp"></c:import>
</head>
<body>
<div id="app">
    <nav class="navbar navbar-inverse">
        <div class="container-fluid">
            <div class="navbar-header">
                <a class="navbar-brand" href="#">Brand</a>
            </div>
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav">
                    <%--定义跳转的路径--%>
                    <li class="active"> <router-link to="/home">Home</router-link></li>
                    <li> <router-link to="/list">List</router-link></li>
                </ul>
            </div>
        </div>
    </nav>
    <div class="container">
        <!—路由切换组件template 插入的位置 -->
        <router-view></router-view>
    </div>
</div>

<script type="x-template" id="modalTel">
    <div>
        <h1> this is home page </h1>

    </div>

</script>
<script>

    /*
     * var Home = Vue.extend({
     template:'<h1> this is home page </h1>',
     })
     * */
    /*使用Javascrip 模板创建组件*/
    var Home = Vue.extend({
        template:'#modalTel'
    })

    /*创建路由器实例*/
    const router = new VueRouter({
        routes:[
                /*默认时的路径*/
            { path: '/', redirect: '/home' },
            {
                path:'/home',
                component:Home,

            },
            {
                path:'/list',
                component:{
                    /*显示一些路由的属性*/
                    template:'<h1> this is list page----{{$route.path}}</h1>'
                }
            }
        ]
    });
    const app = new Vue({
        router:router
    }).$mount('#app')
</script>
</body>
</html>
importFile.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>框架文件</title>
    <link href="<%=request.getContextPath()%>/frame/bootstrap-3.1.1/css/bootstrap.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
    <script  src="<%=request.getContextPath()%>/lib/vue-router.js"></script>
    <script src="<%=request.getContextPath()%>/lib/jquery.min.js"></script>
    <script src="<%=request.getContextPath()%>/frame/bootstrap-3.1.1/js/bootstrap.min.js"></script>

</head>
<body>

</body>
</html>

这样整个运行成功了。


这样,简单的路由实例就完成了。

路由对象

在使用Vue-router 启动应用时,每个匹配的组件实例中都会被注入router 的对象,称
之为路由对象。在组件内部可以通过this.$route 的方式进行调用。
路由对象总共包含了以下几个属性:
1.$route.path
类型为字符串,为当前路由的绝对路径,如/list/1。
2.$route.params
类型为对象。包含路由中动态片段和全匹配片段的键值对。如上述例子中的/list/:page
路径,就可以通过this.$route.params.page 的方式来获取路径上page 的值。
3.$route.query
类型为对象。包含路由中查询参数的键值对。例如/list/1?sort=createTime, 通过
this.$route.query.sort 即可得到createTime。
4.$route.router
即路由实例,可以通过调用其go,replace 方法进行跳转。我们在组件实例中也可以直
接调用this.$router 来访问路由实例。router 具体的属性和api 方法将在7.1.10 路由实例中进
行说明。
5.$route.matched

6.$route.name
类型为字符串,即为当前路由设置的name 属性。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 2 的路由守卫有三种:全局前置守卫、全局后置钩子和组件内的路由守卫。下面我会分别介绍它们的用法。 1. 全局前置守卫: 全局前置守卫通过在路由实例上注册一个回调函数来实现。在每次导航触发前,守卫会按照创建顺序依次被调用。 ```javascript router.beforeEach((to, from, next) => { // 在这里进行判断逻辑,决定是否允许导航 if (to.meta.requiresAuth && !isLoggedIn()) { // 如果需要登录且用户未登录,则跳转到登录页面 next('/login'); } else { // 允许导航 next(); } }); ``` 2. 全局后置钩子: 全局后置钩子通过在路由实例上注册一个回调函数来实现。在每次导航触发后被调用,不会接收到 next 函数。 ```javascript router.afterEach((to, from) => { // 在这里可以进行一些后续操作,如页面统计等 }); ``` 3. 组件内的路由守卫: 组件内的路由守卫是在组件内部通过路由配置对象的 `beforeRouteEnter`、`beforeRouteUpdate` 和 `beforeRouteLeave` 字段来定义的。 ```javascript const Foo = { template: '...', beforeRouteEnter(to, from, next) { // 在进入路由前被调用 // 可以在这里获取组件实例 `this` next(); }, beforeRouteUpdate(to, from, next) { // 在路由更新前被调用 // 可以访问组件实例 `this` next(); }, beforeRouteLeave(to, from, next) { // 在离开路由前被调用 // 可以访问组件实例 `this` next(); } }; ``` 以上就是 Vue 2 的路由守卫的用法。希望对你有所帮助!如有疑问,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值