Vue路由案例

导读:本篇文章讲解 Vue路由案例,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style type="text/css">
    html,
    body,
    #app {
      margin: 0;
      padding: 0px;
      height: 100%;
    }
    .header {
      height: 50px;
      background-color: #545c64;
      line-height: 50px;
      text-align: center;
      font-size: 24px;
      color: #fff;
    }
    .footer {
      height: 40px;
      line-height: 40px;
      background-color: #888;
      position: absolute;
      bottom: 0;
      width: 100%;
      text-align: center;
      color: #fff;
    }
    .main {
      display: flex;
      position: absolute;
      top: 50px;
      bottom: 40px;
      width: 100%;
    }
    .content {
      flex: 1;
      text-align: center;
      height: 100%;
    }
    .left {
      flex: 0 0 20%;
      background-color: #545c64;
    }
    .left a {
      color: white;
      text-decoration: none;
    }
    .right {
      margin: 5px;
    }
    .btns {
      width: 100%;
      height: 35px;
      line-height: 35px;
      background-color: #f5f5f5;
      text-align: left;
      padding-left: 10px;
      box-sizing: border-box;
    }
    button {
      height: 30px;
      background-color: #ecf5ff;
      border: 1px solid lightskyblue;
      font-size: 12px;
      padding: 0 20px;
    }
    .main-content {
      margin-top: 10px;
    }
    ul {
      margin: 0;
      padding: 0;
      list-style: none;
    }
    ul li {
      height: 45px;
      line-height: 45px;
      background-color: #a0a0a0;
      color: #fff;
      cursor: pointer;
      border-bottom: 1px solid #fff;
    }

    table {
      width: 100%;
      border-collapse: collapse;
    }

    td,
    th {
      border: 1px solid #eee;
      line-height: 35px;
      font-size: 12px;
    }
    th {
      background-color: #ddd;
    }
  </style>
  <script src="./vue.js"></script>
  <script src="./router.js"></script>
</head>

<body>
  <!-- 要被vue实例控制的区域 -->
  <div id="app">
    <router-view></router-view>
  </div>

</body>
<script>
  // 定义App根组件
  const App = {
    template: `<div>
    <!-- 头部区域 -->
    <header class="header">后台管理系统</header>
    <!-- 中间主体区域 -->
    <div class="main">
      <div class="content left">
        <ul>
          <li><router-link to="/users">用户管理</router-link></li>
          <li><router-link to="/rights">权限管理</router-link></li>
          <li><router-link to="/goods">商品管理</router-link></li>
          <li><router-link to="/orders">订单管理</router-link></li>
          <li><router-link to="/settings">系统设置</router-link></li>
        </ul>  
      </div>  
      <!-- 右侧内容区域-->
      <div class="content right"><div class="main-content">
        <router-view />
      </div>
      </div>
    </div>
    <!-- 尾部区域 -->
    <footer class="footer">版权信息</footer>
  </div>
    `
  }
  const Users = { 
    data(){
      return{
        userlist:[
          {id:1,name:'张三',age:20},
          {id:2,name:'张三',age:20},
          {id:3,name:'张三',age:20},
          {id:4,name:'张三',age:20},
        ]
      }
    }
    ,
    methods:{
      goDetail(id){
        console.log(id);
        this.$router.push("/userinfo/"+id);
      }
    }
    ,
    template:`<div>
      <h3>用户管理区域</h3>
      <table>
          <thead>
            <tr><th>编号</th><th>姓名</th><th>年龄</th><th>操作</th></tr>
          </thead>
          <tbody>
            <tr v-for="item in userlist" :key="item.id">
              <td>{{item.id}}</td>
              <td>{{item.name}}</td>
              <td>{{item.age}}</td>
              <td>
                <a href="javascript:;" @click="goDetail(item.id)">详情</a>
              </td>
            </tr>
          </tbody>
        </table>
    </div>`}
  const UserInfo = {
    props:[
      'id'
    ],
    template:`<div>
      <h5>用户详情页 ---用户id为:{{id}}</h5>
      <button @click="goback()">后退</button>
    </div>`,
    methods:{
      // 实现后退
      goback(){
        this.$router.go(-1);
      }
    }
  }
  const Rights = { template:`<div>
    <h3>权限管理区域</h3>
  </div>`}
  const Goods = { template:`<div>
    <h3>商品管理区域</h3>
  </div>`}
  const Orders = { template:`<div>
    <h3>订单管理区域</h3>
  </div>`}
  const Settings = { template:`<div>
    <h3>系统设置区域</h3>
  </div>`}
  // 创建路由对象
  const router = new VueRouter({
    routes:[
      {
        path: '/',
        component: App,
        redirect:'/users', //重定向
        children:[
        {path: '/users', component:Users},
        {path: '/userinfo/:id', component:UserInfo ,props:true},
        {path: '/rights', component:Rights},
        {path: '/goods', component:Goods},
        {path: '/orders', component:Orders},
        {path: '/settings', component:Settings}
      ]},

    ]
  })
  const vm = new Vue({
    el: '#app',
    router
  })
</script>

</html>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/4886.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!