Vue的SPA单页面开发

一、什么是SPA

SPA全称(single page Aplication)单页面应用

目前在项目开发过程中只会存在一个HTML文件,在这个文件中动态引入组件,通过组件的自由搭配,实现页面上不同布局的优势

在Vue项目,public文件夹存在index.html,这个就是唯一的html,以后所有的代码都在vue文件写,动态显示到html中就实现加载效果

二、SPA的实现过程

    • 首先配置一级路由

在views文件夹下下面创建三个页面

Login.vue登录页面

regist.vue注册页面

Home.vue主页页面

在路由注册文件配置映射关系

import VueRouter from 'vue-router';
import Vue from 'vue';
import Home from '../components/home.vue'
import Regist from '../components/regist.vue'
import Login from '../components/login.vue'
Vue.use(VueRouter)

const routes = [
    {
        path:'/',
        name:'Home',
        component:Home
    },
    {
        path:'/regist',
        name:'Regist',
        component:Regist
    },
    {
        path:'/login',
        name:'Login',
        component:Login
    }
]
const router = new VueRouter({
    mode:'history',
    base:process.env.BASE_URL,
    routes
})

export default router

注意:

这里面我没有采用路由的懒加载,如果需要懒加载可以采用下面这种方法

{
        path:'/login',
        name:'Login',
        component:()=>import('../view/Login.vue')  懒加载
    }

2、第二步嵌套路由(二级路由)

在Home主页中我们能需要引入外部很多组件,实现动态切换

优先考虑的使用嵌套路由来实现,暂时没有考虑动态组件来实现

import VueRouter from 'vue-router';
import Vue from 'vue';
import Home from '../components/home.vue'
import Regist from '../components/regist.vue'
import Login from '../components/login.vue'
import Main from '../views/subs/Main.vue'
import student from '../views/subs/student.vue'
import teacher from '../views/subs/teacher.vue'
import classes from '../views/subs/classes.vue'
Vue.use(VueRouter)

const routes = [
    {
        path:'/',
        redirect:'/login'
    },
    {
        path:'/',
        name:'Home',
        component:Home,
        children:[
            {
                path:'/',
                name:'Main ',
                component:Main
            },
            {
                path:'student',
                name:'studentt',
                component:student
            },
            {
                path:'teacher',
                name:'taeacher',
                component:teacher,
            },
            {
                path:'classes',
                name:'classes',
                component:classes
            }
        ]
    },
    {
        path:'/regist',
        name:'Regist',
        component:Regist
    },
    {
        path:'/login',
        name:'Login',
        component:Login
    }
]
const router = new VueRouter({
    mode:'history',
    base:process.env.BASE_URL,
    routes
})

export default router

注意:

嵌套路由路径前面不要添加“ / ”。

Home中动态加载路由,必须在Home这个组件内部配置渲染出口

<template>
    <div class="main">
      <div class="leftNav">
        <ul>
          <li 
          v-for="item in menus" :key="item.id"
          @click="changeCheck(item.id)"
          :class='{check:currentTag==item.path}' >
            <i :class=' item.icon '></i> 
            <router-link :to="item.path">{{item.title}}</router-link>
          </li> 
         
        </ul>
      </div>

      <div class="rightContent">
        <!-- 显示需要加载的页面 -->
        <!-- 二级路由渲染出口 -->
        <router-view></router-view>
        </div>
    </div>
  </div>
</template>

<script>

export default {
    data(){
      return{
        menus:[
          {id:1,title:'首页',icon:'fa fa-align-justify',path:'/Home'},
          {id:2,title:'学生管理',icon:'fa fa-address-card',path:'/Home/student'},
          {id:3,title:'班级管理',icon:'fa fa-bank',path:'/Home/classes'},
          {id:4,title:'老师管理',icon:'fa fa-user-circle',path:'/Home/teacher'}

        ],

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值