vue3+ts+vite自适应项目——路由、layout布局

news2024/12/23 1:39:33

系列文章目录

第一章:搭建项目


目录

系列文章目录

前言

一、vue-router

1.安装vue-router

2.引入

2.1 新建页面

2.2 公共样式引入

2.3 layout 布局

2.4路由配置

总结


前言

上一章我们搭建了项目,这一张主要讲路由和layout布局,和vue2 有所不同,但是也有相似的地方,如果看过我之前的博客,那这里就很好理解啦~


一、vue-router

1.安装vue-router

首先,我们需要安装vue-router,执行以下命令:

yarn add vue-router

2.引入

2.1 新建页面

首先,我们新建views文件夹,在新建三个页面,如下:

每个页面先只写一个div占位,如下:

<template>
  <div class="comm_bg">首页</div>
</template>
<script lang="ts" setup>

</script>
<style scoped lang="scss"></style>

2.2 公共样式引入

上一章我们知道啦如何 引入公共样式 和 修改element-plus 样式,这里我们需要定义另一个index.scss 存放两个文件,结构如下:

 在index.scss里面引入两个文件,如下:

@import './element.scss';
@import './public.scss';

修改vite.config.ts 中得公共样式路径,如下:

 此时,我们在 public.scss 中定义comm_bg 作为每个页面得公共背景类,如下:

.comm_bg {
  width: auto;
  height: 100%;
  padding: 29px;
  background: #ffffff;
  border-radius: 14px;
}

2.3 layout 布局

新建layout/index.vue 和 header.vue,结构如下:

 header.vue如下:

<template>
    <div class="barBg">
        <div class="left">XXX综合平台</div>
        <div class="right">
            <div class="btn" :class="nowIndex === index ? 'actived' : ''" v-for="(item, index) in tabList" :key="item.id"
                @click="clickTab(item.router, index)">
                <span>{{ item.name }}</span>
            </div>

        </div>

    </div>
</template>

<script lang="ts" setup>
// 引入路由
import { useRouter } from 'vue-router'
import { ref } from 'vue';
//全局中引入这个方法
const router = useRouter()
const nowIndex = ref(0)
console.log(nowIndex.value)
//声明一个函数
const clickTab = (e, index) => {
    console.log(e)
    nowIndex.value = index
    router.push(e)
}
const tabList = [
    { id: "1", name: '首页', router: '/home', },
    { id: "3", name: '综合商城', router: '/mine', },
    { id: "2", name: '我的主页', router: '/mine', },

]


</script>

<style lang="scss" scoped>
.barBg {
    padding: 50px 3px;
    display: flex;
    justify-content: space-between;

    .left {
        font-size: 28px;
        line-height: 19px;
        color: #ffffff;
    }

    .actived {
        padding-bottom: 23px;
        border-bottom: 4px solid #ffff;
        border-radius: 2px;
        font-weight: bold
    }

    .right {
        display: flex;
        justify-content: space-between;

        .btn {
            display: flex;
            vertical-align: middle
        }

        div {
            margin-right: 29px;

        }

        div:nth-child(3) {
            margin-right: 0;
        }

    }

}
</style>

index.vue主要是配置layout布局,如下:

<template>
  <el-container>
    <el-header>
      <Bar />
    </el-header>
    <el-main>
      <!-- 子路由出口 -->
      <router-view />
    </el-main>
  </el-container>
</template>
  
<script setup lang="ts">
import Bar from './header.vue'

</script>
  
<style scoped lang="scss">
.el-container {
  height: 100vh;
}

.el-header {
  width: calc(100vw);
  height: 128px;
  background-color: $main_bg;
  color: #ffffff
}

.el-main {
  width: calc(100vw);
  background-color: #E9EEF3;
  padding: 30px;
}
</style>

2.4路由配置

我们新建 router/routes.ts  引入layout布局,主要存放路由信息,代码如下:


// 引入创建路由模式 history模式
import Layout from '../layout/index.vue'
// 引入路由各页面配置
const routes = [
  {
    path: '/login',
    name: 'login',
    component: () => import('../views/login/index.vue'),
  },
  {
    path: '/',
    redirect: '/home'
  },
  {
    path: '/',
    component: Layout,
    name: 'layout',
    children: [
      {
        path: '/home',
        component: () => import('../views/home/index.vue'),
        name: 'home'
      },
      {
        path: '/mine',
        component: () => import('../views/mine/index.vue'),
        name: 'mine'
      }
    ]
  },

]

export default routes;

再新建router/index.ts,注册路由,这里使用history模式,如下:

import { createRouter, createWebHistory } from "vue-router"
import routes from "./routes"
var router = createRouter({
  history: createWebHistory(),
  routes
})
export default router  

最后在main.ts里面引入 和注册,如下:

 此时路由就引入完成了~

最后再配置app.vue入口,如下:

<script setup lang="ts">

</script>

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

<style lang="scss" scoped>

</style>

此时再运行,截图如下:


总结

以上就是今天得内容,路由配置,下一章准备将请求控制~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/479798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go环境安装

Go 是一个开源的编程语言&#xff0c;它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发&#xff0c;后来还加入了Ian Lance Taylor, Russ Cox等人&#xff0c;并最终于2009年11月开源&#xff0c;在2012年早些时…

ArduPilot之GPS Glitch问题M8N模块配置

ArduPilot之GPS Glitch问题&M8N模块配置 1. 源由2. 现象3. 视频分析3.1 配置&#xff08;不理想&#xff09;3.2 配置优化3.3 优化配置短时间3D LockGlitch3.4 优化配置长时间3D DGPS Lock3.5 使用尽量多的卫星系统3.5.1 配置一3.5.2 配置二 4. 总结4.1 解锁卫星数4.2 自动…

项目风险管理

风险的分类(按照性质划分) 纯粹风险:只有损失可能性而无获利可能性的风险。投机风险:相对于纯粹风险而言,指既有损失的可能又有获利机会的风险。风险既是一个危险也是一个机会 一、规划风险管理 决定如何进行规划和实施项目风险管理活动 二、风险识别 判断哪些风险会…

单列文本数据快速导入表格

文本数据导入Excel似乎是个老生常谈&#xff0c;方法也有很多&#xff0c;例如 使用文本编辑器打开文本文件&#xff0c;拷贝粘贴到Excel然后分类Power Query中的【从文本/CSV】如下图所示。 但是这个需求略有不同&#xff0c;文本数据为单列&#xff0c;每7行数据为一组&am…

2023年华东杯数学建模B 题 期货价格相关性问题-思路解析

题目背景&#xff1a; 许多金融标的都有其内在的关联&#xff0c;如何从量价数据找到这种关联是一个有趣的 问题。例如在万得的“煤焦钢矿”板块中&#xff0c;有螺纹钢、铁矿石、不锈钢、热轧卷板、 硅铁、焦煤、焦炭、锰硅、线材 9 个品种。这些品种有些是上下游关系&…

【高频电子线路】——高频小信号放大器学习笔记总结

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 学习之路&#xff0c;长路漫漫&#xff0c;写学习笔记的过程就是把知识讲给自己听的过程。这个过程中&#xff0c;我们去记录思考的过程&#xff0c;便于日后复习&#xff0c;梳理自己的思路。学习之乐&#xff0c;独乐乐&a…

SmartEngine流程引擎之Custom模式

目录 一、为什么选用SmartEngine 二、各类流程引擎框架简单对比 1、流程设计器推荐 2、什么是BPMN 流程定义解释说明 三、SmartEngine之Custom实操 1、引入依赖 2、典型的初始化代码如下 3、节点如何流转以及流程实例存储问题 4、定义Delegation 关键类 一、为什么选用…

RebbitMQ Windows安装

RabbitMQ是由Erlang语言写的,因此安装前要先安装Erlang Erlang及RabbitMQ安装版本的选择 下载时一定要注意版本兼容性 版本兼容说明地址&#xff1a;RabbitMQ Erlang Version Requirements — RabbitMQ 我们选择的版本 Erlang官网下载:https://www.erlang.org/downloads Ra…

[大家的项目] 获取主机IP地址

get-host-ip https://github.com/stuartZhang/get-host-ip/tree/main 这是一款用rust制作的命令行工具。其被设计用来从C:\Windows\System32\ipconfig.exe的执行结果内提取出指定【网卡】的属性值。比如&#xff0c;从电脑本的【无线局域网适配器WLAN】中提取出【IPv4地址】字符…

写给开发同学的 AI 强化学习入门指南

该篇文章是我学习过程的一些归纳总结&#xff0c;希望对大家有所帮助。 最近因为 AI 大火&#xff0c;搞的我也对 AI 突然也很感兴趣&#xff0c;于是开启了 AI 的学习之旅。其实我也没学过机器学习&#xff0c;对 AI 基本上一窍不通&#xff0c;但是好在身处在这个信息爆炸的…

数据结构---栈的实现

文章目录 前言一、什么是栈&#xff1f;二、栈的实现 1.栈的结构2.栈的接口实现过程总结 前言 栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶&#xff0c;相对地&#xff0c;把另一…

用ChatGPT通过WebSocket开发一个交互性的五子棋微信小程序(二)

文章目录 1 前言1.1 实现的原理1.2 如何与微信小程序联系 2 五子棋项目2.1 申请OpenAI的API2.2 调用API代码2.3 界面代码 3 同步五子棋到前端小程序3.1 WebSocket长连接3.2 获取实时下棋 4 讨论 1 前言 1.1 实现的原理 大体方向是将ChatGPT作为后端语言模型&#xff0c;然后将…

AD19 基础应用技巧(差分线的添加走线与蛇形等长)

《差分线的添加走线与蛇形等长》 问:何为差分信号? 答:通俗地说&#xff0c;就是驱动端发送两个等值、反相的信号&#xff0c;接收端通过比较这两个电压的差值来判断逻辑状态“0”还是“1”。 问:差分线的优势在哪? 答:差分信号和普通的单端信号走线相比&#xff0c;最明量…

【SpringBoot2】三:基础入门---自动配置原理(自动配置原理入门+开发技巧)

文章目录 1.自动配置原理入门1.1 引导加载自动配置类1.2 按需开启自动配置项1.3 修改默认配置1.4 最佳实践 2.开发小技巧2.1 Lombok2.1.1 简化Bean开发2.1.2 简化日志开发 2.2 dev-tools2.3 Spring Initailizr&#xff08;项目初始化向导&#xff09; 1.自动配置原理入门 1.1 …

【数据库】Java的JDBC编程(idea链接数据库)

目录 前言 1、Java的数据库编程&#xff1a;JDBC 2、使用JDBC&#xff08;项目中导入数据库驱动包&#xff09; 2.1、获取驱动包 2.2、将数据库驱动包导入Java项目中 2.3、使用JDBC编写代码 2.3.1、创建并初始化一个数据源 2.3.2、 和数据库服务器建立链接 2.3.3、构…

C++(多态上)

目录: 1.多态的概念 2.多态的定义和实现 3.虚函数构成重写的特例 4.剖析一道非常经典的题 5.剖析多态的原理 ------------------------------------------------------------------------------------------------------------------------- 1.多态的概念 概念:通俗来说&#…

嵌入式开发--无刷电机学习2--克拉克变换

克拉克变换 首先说明&#xff0c;有很多方法&#xff0c;在数学上是等价的&#xff0c;比如33333*412。下面说的事情也是。 为了更简明的控制&#xff0c;克拉克女士提出电机控制简化的方法&#xff0c;即建立一个坐标系&#xff0c;横轴是α 纵轴是β&#xff0c;并将三相电…

RabbitMQ入门Demo 简单模式

出现的问题,原本4个操作,要么全部执行,要么全部不执行------->强一致性 但是现在分开了-----------最终一致性 强一致性&#xff1a;指在消息传递的过程中&#xff0c;系统会确保每个消息被精确地按照发送的顺序被传递&#xff0c;并且每个消息都会被正确地处理。强一致性…

重大问题,Windows11出现重大BUG

重大问题&#xff0c;Windows11出现重大BUG 这种Windows11操作系统出现BUG已经可以说是非常常见的&#xff0c;但是&#xff0c;今天我将代表所有微软用户&#xff0c;解决一个关于UI设计非常不舒服的功能 关闭多平面覆盖 事情叙述问题 微软社区解决方案自己发现的解决方案解决…

模拟比较器(Comparator)

概述 ⚫ 两个比较器&#xff0c;Comp1为低功耗比较器&#xff0c;Comp2为rail-to-rail快速比较器 ⚫比较器负端输入为vref或者IO输入&#xff0c;比较器正端为IO输入 ⚫ Buffer有Bypass功能&#xff0c;Bypass使能有效则不经过Buffer直接输入至比较器 ⚫ Buffer有1/2分压功能 ⚫…