黑马大事件学习-16 (前端主页面)

效果展示

主页面搭建

在资料上复制源码

配置路径

html 复制代码
<script setup>
  import LoginVue from '@/views/Login.vue'
  import LayoutVue from '@/views/Layout.vue'; 
</script>

<template>
  <LoginVue/>
  <LayoutVue/>
</template>

<style scoped></style>

测试

路由

路由决定从起点到终点的进程

在前端路由指的是根据不同的访问路径,展示不同组件的路程

Vue Router是Vue.js的官方路程

安装Vue Router

安装

创建路由器并导出

javascript 复制代码
import { createRouter,createWebHistory} from "vue-router";
// 导入组件
 import LoginVue from '@/views/Login.vue'
import LayoutVue from '@/views/Layout.vue'; 

//定义路由关系
const routes = [
    {path:'/login',component:LoginVue},
    {path:'/',component:LayoutVue}
]

//创建路由器
const router = createRouter({
    history:createWebHistory(),
    routes:routes
})

//导出路由
export default router;

在应用实例上使用

main.js

javascript 复制代码
import router from '@/router'
app.use(router)

声明router-view标签,展示组件内容

app.vue

html 复制代码
<script setup>

</script>

<template>
  <router-view></router-view>
</template>

<style scoped></style>

Login.vue

javascript 复制代码
//调用后台接口完成登录
import {useRouter} from 'vue-router'
const router = useRouter()
const login = async()=>{
    let result=await userLoginService(registerData.value);
    // alert(result.msg ? result.msg:'登录成功');
    ElMessage.success(result.msg ? result.msg:'登录成功');
    // 跳转到首页 路由跳转
    router.push('/')
}

子路由

复制资料总提供好的五个组件

配置子路由

javascript 复制代码
import { createRouter,createWebHistory} from "vue-router";
// 导入组件
 import LoginVue from '@/views/Login.vue'
import LayoutVue from '@/views/Layout.vue'; 
import ArticleCategoryVue from '@/views/article/ArticleCategory.vue'
import ArticleManageVue from '@/views/article/ArticleManage.vue'
import UserAvatarVue from '@/views/user/UserAvatar.vue'
import UserInfoVue from '@/views/user/UserInfo.vue'
import UserResetPasswordVue from '@/views/user/UserResetPassword.vue'

//定义路由关系
const routes = [
        {path:'/login',component:LoginVue},
            {path:'/',component:LayoutVue,children:[
            {path:'/article/category',component:ArticleCategoryVue},
            {path:'/article/manage',component:ArticleManageVue},
            {path:'/user/avatar',component:UserAvatarVue},
            {path:'/user/info',component:UserInfoVue},
            {path:'/user/resetPassword',component:UserResetPasswordVue}
        ]
    }
]

//创建路由器
const router = createRouter({
    history:createWebHistory(),
    routes:routes
})

//导出路由
export default router;

声明router-view标签

Layout.vue

html 复制代码
              <!-- <div style="width: 1290px; height: 570px;border: 1px solid red;">
                    内容展示区
                </div> -->
                <router-view></router-view>

为菜单项el-menu-item设置index属性,设置点击后的路由路径

javascript 复制代码
 <el-menu active-text-color="#ffd04b" background-color="#232323"  text-color="#fff"
                router>
                <el-menu-item index="/article/category">
                    <el-icon>
                        <Management />
                    </el-icon>
                    <span>文章分类</span>
                </el-menu-item>
                <el-menu-item index="/article/manage">
                    <el-icon>
                        <Promotion />
                    </el-icon>
                    <span>文章管理</span>
                </el-menu-item>
                <el-sub-menu >
                    <template #title>
                        <el-icon>
                            <UserFilled />
                        </el-icon>
                        <span>个人中心</span>
                    </template>
                    <el-menu-item index="/user/info">
                        <el-icon>
                            <User />
                        </el-icon>
                        <span>基本资料</span>
                    </el-menu-item>
                    <el-menu-item index="/user/avatar">
                        <el-icon>
                            <Crop />
                        </el-icon>
                        <span>更换头像</span>
                    </el-menu-item>
                    <el-menu-item index="/user/resetPassword">
                        <el-icon>
                            <EditPen />
                        </el-icon>
                        <span>重置密码</span>
                    </el-menu-item>
                </el-sub-menu>
            </el-menu>

重定向

javascript 复制代码
const routes = [
        {path:'/login',component:LoginVue},
            {path:'/',component:LayoutVue,redirect:'/article/manage',children:[
            {path:'/article/category',component:ArticleCategoryVue},
            {path:'/article/manage',component:ArticleManageVue},
            {path:'/user/avatar',component:UserAvatarVue},
            {path:'/user/info',component:UserInfoVue},
            {path:'/user/resetPassword',component:UserResetPasswordVue}
        ]
    }
]
相关推荐
Old Uncle Tom12 分钟前
银行用户画像 -- 金融目标与需求意图
前端·人工智能·金融
IT_陈寒17 分钟前
Vue的响应式让我加班到凌晨3点,原来问题出在这
前端·人工智能·后端
东方小月18 分钟前
从0开发一个 Coding Agent(一):前言
前端·人工智能·typescript
恋猫de小郭18 分钟前
Flutter 全新真 3D 实现,用 flutter_scene 能开发一个「我的世界」
android·前端·flutter
ji_shuke41 分钟前
远程排查 Web 系统问题:如何导出 HAR 文件协助定位
前端·问题排查
劈星斩月44 分钟前
监督学习算法 之 决策树
学习·算法·决策树
AOwhisky1 小时前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
程序员爱钓鱼1 小时前
Rust String 与 &str 详解:字符串所有权、借用与转换
前端·后端·rust
woshihuanglaoshi1 小时前
数据迁移与版本管理 - Flutter在鸿蒙平台实现数据库升级策略
数据库·学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统