路由

作者: 尤物_1 | 来源:发表于2018-09-25 08:56 被阅读0次

路由:vue-router

路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容。Home按钮  => home 内容, about按钮 => about 内容,也可以说是一种映射. 所以在页面上有两个部分,一个是点击部分,一个是点击之后,显示内容的部分。 

  点击之后,怎么做到正确的对应,比如,我点击home 按钮,页面中怎么就正好能显示home的内容。这就要在js 文件中配置路由。

  路由中有三个基本的概念 route, routes, router。

    1, route,它是一条路由,由这个英文单词也可以看出来,它是单数, Home按钮  => home内容, 这是一条route,  about按钮 => about 内容, 这是另一条路由。

    2, routes 是一组路由,把上面的每一条路由组合起来,形成一个数组。[{home 按钮 =>home内容 }, { about按钮 => about 内容}]

    3, router 是一个机制,相当于一个管理者,它来管理路由。因为routes 只是定义了一组路由,它放在哪里是静止的,当真正来了请求,怎么办? 就是当用户点击home 按钮的时候,怎么办?这时router 就起作用了,它到routes 中去查找,去找到对应的 home 内容,所以页面中就显示了 home 内容。

    4,客户端中的路由,实际上就是dom 元素的显示和隐藏。当页面中显示home 内容的时候,about 中的内容全部隐藏,反之也是一样。客户端路由有两种实现方式:基于hash 和基于html5 history api.

Vue Router 是 [Vue.js](http://cn.vuejs.org/) 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:

  • 嵌套的路由/视图表
  • 模块化的、基于组件的路由配置
  • 路由参数、查询、通配符
  • 基于 Vue.js 过渡系统的视图过渡效果
  • 细粒度的导航控制
  • 带有自动激活的 CSS class 的链接
  • HTML5 历史模式或 hash 模式,在 IE9 中自动降级
  • 自定义的滚动条行为

例子:

基本结构:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
 <a></a>
  <div id='app'>
     <!--1.-->
     <router-link to='/home'>首页</router-link>
     <router-link to='/user'>用户页</router-link> 
     
    <!-- 盛放链接对应的内容-->
      <router-view></router-view>
  </div>
   <script src='js/vue.js'></script> 
   <script src='js/vue-router.js'></script>
   <script>
       //2.创建组件
       var Home={
           template:`
             <h1>这是首页</h1>
           `
       }
       
       var User={
           template:`
                <h1>这是用户页</h1>
            `
       }
       
       //3.配置路由
       const  routes=[
           {path:'/home',component:Home},
           {path:'/user',component:User}
       ]
       
       //4.创建路由实例
       const router=new VueRouter({
           routes:routes
       })
       
       //5.路由实例挂载到vue实例上
       new Vue({
           el:'#app',
           router:router
       })
    </script>
</body>
</html>

命名路由

有时候,通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候。你可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称。

const router = new VueRouter({
  routes: [
    {
      path: '/user/:userId',
      name: 'user',
      component: User
    }
  ]
})

要链接到一个命名路由,可以给 router-link 的 to 属性传一个对象:

<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>

这跟代码调用 router.push() 是一回事:

router.push({ name: 'user', params: { userId: 123 }})

这两种方式都会把路由导航到 /user/123 路径。

效果1:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
/*
        .router-link-active{
            color:red;
        } 
*/
        .active{
            color:red;
        }
    </style>
</head>
<body>
 <a></a>
  <div id='app'>
     <!--1.-->
     <router-link to='/home'>首页</router-link>
     <router-link to='/user'>用户页</router-link> 
     
    <!-- 盛放链接对应的内容-->
      <router-view></router-view>
  </div>
   <script src='js/vue.js'></script> 
   <script src='js/vue-router.js'></script>
   <script>
       //2.创建组件
       var Home={
           template:`
             <h1>这是首页</h1>
           `
       }
       
       var User={
           template:`
                <h1>这是用户页</h1>
            `
       }
       
       //3.配置路由
       const  routes=[
           {path:'/',component:Home},
           {path:'/home',component:Home},
           {path:'/user',component:User}
       ]
       
       //4.创建路由实例
       const router=new VueRouter({
           routes:routes,
           linkActiveClass:'active'
       })
       
       //5.路由实例挂载到vue实例上
       new Vue({
           el:'#app',
           router:router
       })
    </script>
</body>
</html>

嵌套路由

实际生活中的应用界面,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层组件,例如:

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

借助 vue-router,使用嵌套路由配置,就可以很简单地表达这种关系。

例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
  <div id='app'>
   <!--1.-->
   <router-link to='/index'>首页</router-link>
   <router-link to='/user'>用户页</router-link>
   <router-view></router-view>
  </div>
   <script src='js/vue.js'></script> 
   <script src='js/vue-router.js'></script>
   <script>
       //2.创建组件
       var  Index={
           template:`
             <h1>这是首页</h1>
           `
       }
       var User={
           template:`
           <div>
             <h1>这是用户页</h1>
             <ul>
               <li>
                  <router-link to='/user/regist'>注册</router-link>
               </li> 
                <li>
                  <router-link to='/user/login'>登录</router-link>
               </li>
            </ul>
            <router-view></router-view>
           </div>
         `
       }
       var Regist={
           template:`
             <h3>这是注册页</h3>
          `
       }
        var Login={
           template:`
             <h3>这是登录页</h3>
          `
       }
       
       //3.配置路由
       const routes=[
           {path:'/',component:Index},
           {path:'/index',component:Index},
           {
               path:'/user',
               component:User,
               children:[
                   {path:'regist',component:Regist},
                   {path:'login',component:Login}
               ]
           }
       ]
       
       //4.创建路由实例
       const router=new VueRouter({
           routes:routes
       })
       
       //5.把路由实例挂载到vue实例上
      new Vue({
          el:'#app',
          router:router//注册路由
      })
    </script>
</body>
</html>

相关文章

  • thinkphp5学习笔记(三)路由配置

    URL请求的执行流程 路由模式 路由注册 路由规则 路由地址 路由参数 变量规则 路由分组 别名路由 路由绑定

  • larevel 路由索引

    基本路由:路由重定向、视图路由路由参数:必选、可选、正则表达式命名路由路由组:中间件、命名空间、子域名路由、路由前...

  • laravel路由

    2 路由格式 3 路由参数 4 .路由别名 5 .路由群组

  • Vue3: 前端路由的概念和原理

    1、什么是路由 路由(英文:router)就是对应关系。路由分为两大类:① 后端路由② 前端路由 2、后端路由 后...

  • 组件化2.路由框架的设计

    路由框架原理 路由框架是为了实现组件之间的通信 路由框架维护了一个分组的路由表路由表中存放了路由地址和路由信息路由...

  • vue中的路由

    vue中4中路由包含: 1、动态路由2、嵌套路由3、编程式路由4、命名式路由 1、动态路由 2、嵌套路由 3、编程...

  • React-Router知识点

    路由的分类 页面路由 hash 路由 h5路由 react路由 react-router-dom 路由方式 h5路...

  • 路由策略

    路由策略和策略路由 什么是路由策略?路由策略和策略路由有什么区别? 如何配置路由策略? https://blog....

  • Laravel 学习笔记

    路由 文件位置: app/Http/routes.php 基础路由get/post 多请求路由 路由参数 路由别名...

  • React路由

    React路由 一、路由的形式 hash路由 : HashRouter history路由 : BrowserRo...

网友评论

      本文标题:路由

      本文链接:https://www.haomeiwen.com/subject/amjkoftx.html