vue3搭建实战项目笔记二
vue3搭建实战项目笔记二
- 2.1.git管理项目
- 2.2.隐藏tabBar栏
- 2.2.1 方案一:在路由元信息中设置一个参数是否显示tabBar
- 2.2.2 方案二:通过全局设置相对定位样式
- 2.3.项目里封装axios
- 2.3.1 发送网络请求的两种做法
- 2.3.2 封装axios并发送网络请求
- 2.3.2.1 对axios的封装写在index.js中
- 2.3.2.2 统一配置文件
- 2.3.2.2 统一引用
- 2.3.3 测试发送网络请求并存储数据
- 2.3.3.1 创建storei并编写网络请求函数
- 2.3.2.2 封装请求地址函数
- 2.3.2.3 测试调用接口发送网路请求
- 2.3.2.4 补充数据请求地址封装的过程
- 2.3.2.5 封装axios的好处
2.1.git管理项目
-
createVue工具默认没有初始化git仓库,vue-cli是默认初始化git本地仓库的
- 基于webpack工具;
- 命令:vue create xxx
-
没有的话,手动用git来做一个项目管理
- 初始化一个git仓库
- 命令:
- 1.git init 初始化仓库
- 2.git add . 将对应的文件添加的本地仓库
- 3.git commit -m ‘xxx’ 做一个本地提交版本
- 4.补充husky是一个用于git钩子的工具,提交代码时做验证
-
依赖问题:
- 当出现npm install报错安装不上的时候,
- 查看报错原因,如果是依赖不兼容,可以使用–force(强制安装)或者 --legacy-peer-deps(忽略冲突、各自安装)
2.2.隐藏tabBar栏
2.2.1 方案一:在路由元信息中设置一个参数是否显示tabBar
- 在router文件夹下index.js中设置路由元信息```javascript import { createRouter, createWebHashHistory } from 'vue-router'const router = createRouter({history: createWebHashHistory(),// 映射关系:path -> componentroutes: [{path: '/city',component: () => import('@/views/city/city.vue'),meta: {hideTabBar: true}}]})export default router;```
- 在App.vue中通过获取当前活跃的路由对象的meta信息,通过判断是否隐藏tabBar来控制tabBar的显示和隐藏```javascript <template><div class="app"><!-- 根据路由元信息是否显示 tabBar --><router-view></router-view><tab-bar v-if="!route.meta.hideTabBar"/></div></template><script setup>import tabBar from '@/components/tab-bar/tab-bar.vue';import { useRoute } from 'vue-router';// 当前活跃的路由对象const route = useRoute()</script>```
2.2.2 方案二:通过全局设置相对定位样式
- 在common.css中设置top-page
- 样式如下:```javascript.top-page {position: relative;z-index: 9;height: 100vh;overflow-y: auto;background-color: #fff;}```
- 使用时加上类名即可
2.3.项目里封装axios
2.3.1 发送网络请求的两种做法
- 两种做法如下:
- 引入第三方库 axios,直接在组件页面直接使用axios发送网络请求,但是这样来做不好,不利于代码维护
- 最好对axios做一层封装,不管是复用性、可用性、可维护性,甚至框架的替换都是更方便的
2.3.2 封装axios并发送网络请求
2.3.2.1 对axios的封装写在index.js中
-
步骤: 在service文件夹下新建request文件夹,然后在新建index.js
-
index.js代码如下:
```javascript import axios from 'axios'import { BASE_URL, TIME_OUT } from './config'class HyRequest {constructor(baseURL, timeout = 10000) {this.instance = axios.create({baseURL,timeout})}request(config) {return new Promise((resolve, reject) => {this.instance.request(config).then(res => {resolve(res.data)}).catch(err => {reject(err)})})}get (config) {return this.request({...config, method: 'get'})}post (config) {return this.request({...config, method: 'post'})}}export default new HyRequest(BASE_URL, TIME_OUT)```- 文件结构图如下:

- 文件结构图如下:
2.3.2.2 统一配置文件
- 步骤: 在request文件夹,然后在新建config.js主要用于配置基础路径和超时时间
- config.js代码如下:
export const BASE_URL = "http://123.207.32.32:1888/api"export const TIME_OUT = 10000```
2.3.2.2 统一引用
- 在request文件下的index.js文件中如分别引入这两个参数
- 完整代码如图:

2.3.3 测试发送网络请求并存储数据
- 使用pinia状态管理库在actions发送网络请求
- 关键点:
- 在state里面存储数据
- 在actions里面编写异步函数(网络请求函数)
- 在页面调用异步函数(网络请求函数)
2.3.3.1 创建storei并编写网络请求函数
- 创建home模块——在stores新建modules文件夹,新建一个模块home.js处理home中共的网络请求和数据存储
- 代码如下:
import { defineStore } from "pinia";import hyRequest from '@/service/request/index.js'const useHomeStore = defineStore("home", {state: () => ({hotSuggests: [],categories: []}),actions: {async fetchHotSuggests () {const res = await hyRequest.get({ url:'/home/hotSuggests' })this.hotSuggests = res.data}}})export default useHomeStore
- 代码如下:
- 考虑到模块中可能会有大量网络请求,可能会有大量的网络请求地址会造成后期不好维护,所以在做了一层封装
- 代码如下:
import { defineStore } from "pinia";import { getHomeHotSuggests } from "@/service";const useHomeStore = defineStore("home", {state: () => ({hotSuggests: [],categories: []}),actions: {async fetchHotSuggests () {const res = await getHomeHotSuggests()this.hotSuggests = res.data}}})export default useHomeStore```
- 代码如下:
2.3.2.2 封装请求地址函数
- 封装的原因:
- 会造成组件页面过多的维护请求URL,代码冗余
- 后期不利于修改和维护这个地址,如发生修改需要找到对应的组件,在修改对应的地址,不方便进行管理
- 第一步在service文件下新建modules文件夹,然后新建一个模块home.js文件,统一处理home页面请求地址函数(相当于对请求地址做了一层单独的封装)
- 代码如下:
import hyRequest from '../request'export function getHomeHotSuggests () {return hyRequest.get({ url: "/home/hotSuggests" })}```
- 代码如下:
- 第二步统一导出请求地址函数,在service文件夹下新建index.js,先从各模块中导入所有的函数,然后在进行统一导出
- 代码如下:
// ./modules/home从这个文件里面导入该文件所有导出的东西 // export * 然后在这里统一做一个导出(把所有导入的东西都导出下) export * from './modules/city' export * from './modules/home'
- 代码如下:
2.3.2.3 测试调用接口发送网路请求
- 测试调用接口函数,在home页面发送网络请求
- 代码如下
<script setup>import useHomeStore from '@/stores/modules/home';// 发送网络请求const homeStore = useHomeStore()homeStore.fetchHotSuggests()</script>``` - 在子组件中获取数据
- 代码如下:
<template><div class="section hot-suggests"><template v-for="(item,index) in hotSuggests" :key="index"><div class="item":style="{ color: item.tagText.color, background: item.tagText.background.color }">{{ item.tagText.text }}</div></template></div></template><script setup>import useHomeStore from '@/stores/modules/home'import { storeToRefs } from 'pinia'// 热门建议const homeStore = useHomeStore()const { hotSuggests } = storeToRefs(homeStore)</script>
- 代码如下:
2.3.2.4 补充数据请求地址封装的过程
- 整体过程:单个组件想拿数据,不需要关心这个数据请求的URL(对于组件来说),只需要从modules文件下找到对应的模块,引入对应的模块,直接调用相对应的接口地址函数封装
- 详细过程:
- 比如调用home.js中的getHomeHotSuggests的时候,要请求的URL和参数,全部都在home.js模块中做拼接的
- 地址和参数拼接好后在发送网络请求,拿到数据返回的是promise
- 把promise的数据返回出去,最后调用这个promise拿到数据,在组件中做数据渲染
- 文件目录结构如图:

2.3.2.5 封装axios的好处
- 当项目代码越来越多的时候,上面的组织架构思路就会更清晰,做了一个分层架构,便于维护和修改, 将很多功能做了一个力度化
相关文章:
vue3搭建实战项目笔记二
vue3搭建实战项目笔记二 2.1.git管理项目2.2.隐藏tabBar栏2.2.1 方案一:在路由元信息中设置一个参数是否显示tabBar2.2.2 方案二:通过全局设置相对定位样式 2.3.项目里封装axios2.3.1 发送网络请求的两种做法2.3.2 封装axios并发送网络请求2.3.2.1 对axi…...
【原创】解决vue-element-plus-admin无法实现下拉框动态控制表单功能,动态显隐输入框
前言 目前使用vue-element-plus-admin想要做一个系统定时任务功能,可以选择不同的定时任务类型,比如使用cron表达式、周期执行、指定时间执行等。每种类型对应不同的输入框,需要动态显隐输入框才行,但是这个vue-element-plus-adm…...
大疆无人机需要的kml文件如何制作kml导出(大疆KML文件)
大疆无人机需要的轨迹kml文件,是一种专门的格式,这个kml里面只有轨迹点,其它的属性信息都不需要。 BigemapPro提供了专门的大疆格式输出, 软件这里下载 www.bigemap.com 安装后,kml导入如下图: 然后选择…...
前端知识速记--css篇:CSS3中的常见动画及实现方式
前端知识速记–css篇:CSS3中的常见动画及实现方式 常见的CSS3动画 1. 过渡 (Transitions) 过渡是一种非常简单的动画效果,允许你在元素的状态变更时平滑过渡到新状态。 语法格式: transition: property duration timing-function delay;…...
YOLOV8的学习记录(二) yolo8的几个内置模型简介
YOLOv8 是一个多功能的计算机视觉框架,支持多种任务,包括分类(Classify)、检测(Detect)、旋转目标检测(OBB)、姿态估计(Pose)、实例分割(Segment&…...
免费deepseek的API获取教程及将API接入word或WPS中
免费deepseek的API获取教程: 1 https://cloud.siliconflow.cn/中注册时填写邀请码:GAejkK6X即可获取2000 万 Tokens; 2 按照图中步骤进行操作 将API接入word或WPS中 1 打开一个word,文件-选项-自定义功能区-勾选开发工具-左侧的信任中心-信任中心设置…...
Windows操作系统部署Tomcat详细讲解
Tomcat是一个开源的Java Servlet容器,用于处理Java Web应用程序的请求和响应。以下是关于Tomcat的用法大全: 一、安装Tomcat 下载 访问Apache Tomcat官方网站(https://tomcat.apache.org/),根据你的操作系统…...
深入解析A2DP v1.4协议:蓝牙高质量音频传输的技术与实现
1. A2DP概述 A2DP(Advanced Audio Distribution Profile)是一种高质量音频流媒体协议,旨在实现高质量音频内容的分发,通常用于通过蓝牙设备传输音频数据,例如将音乐从便携式播放器传输到耳机或扬声器。与传统的蓝牙语…...
(三)Axure制作转动的唱片
效果图 属性: 图标库:iconfont-阿里巴巴矢量图标库 方形图片转为圆角图片,裁剪,然后加圆角, 唱片和底图是两个图片,点击播放,唱片在旋转。 主要是播放按钮和停止按钮,两个动态面板…...
VueRouter 实例
分析下列代码 const router new VueRouter({mode:history,routes }) 1.const router new VueRouter({ ... })用来创建一个 Vue Router 实例,用于管理 Vue.js 应用的路由。2.mode: history: 作用:启用 HTML5 History 模式,去除…...
Docker 镜像标签使用
写在前面 当使用命令 docker pull mysql 拉取镜像时,其实等价于如下命令 docker pull mysql:latest latest 是默认的标签,字面上理解为最新版本的镜像,实质上 latest 只是镜像的标签名称,跟具体某个版本号地位一样,…...
ASP.NET Core SixLabors.ImageSharp 位图图像创建和下载
从 MVC 控制器内部创建位图图像并将其发送到浏览器;用 C# 编写并与 Linux 和 Windows 服务器兼容。 使用从 ASP.NET MVC 中的控制器下载任何文件类型File。 此示例创建一个位图 (jpeg) 并将其发送到浏览器。它需要 NuGet 包SixLabors.ImageSharp v1.0.4。 另请参…...
蓝桥杯篇---超声波距离测量频率测量
文章目录 简介第一部分:超声波的简介工作原理1.发射超声波2.接收反射波3.计算时间差4.计算距离 硬件连接1.Trig2.Echo 示例代码代码说明注意事项1.声速2.延时精度3.硬件连接 第二部分:频率测量简介频率测量原理1.信号输入2.计数3.计算频率 硬件连接示例代…...
机器学习所需要的数学知识【01】
总览 导数 行列式 偏导数 概理论 凸优化-梯度下降 kkt条件...
【D2】神经网络初步学习
总结:学习了 PyTorch 中的基本概念和常用功能,张量(Tensor)的操作、自动微分(Autograd)、正向传播、反向传播。通过了解认识LeNet 模型,定义神经网络类,熟悉卷积神经网络的基本结构和…...
变相提高大模型上下文长度-RAG文档压缩-3.优化map-reduce(reranker过滤+社区聚类)
我遇到的业务问题实际上是RAG需要处理很多同一对象的日常报告,不像常识类问题,它的相关Document更多而且更分散,日常报告代表数据库里有很多它的内容,而且对象可能只在段落中的几句话提及到。top-k数量受限于大模型长度࿰…...
电解电容的参数指标
容量 这个值通常是室温25℃,在一定频率和幅度的交流信号下测得的容量。容量会随着温度、直流电压、交流电压值的变化而改变。 额定电压 施加在电容上的最大直流电压,通常要求降额使用。 例如额定电压是4V,降额到70%使用,最高施…...
计时器任务实现(保存视频和图像)
下面是一个简单的计时器任务实现,可持续地每秒保存一幅图像,也可持续地每60秒保存一个视频,图像和视频均以当前时间命名: TimerTask类的实现如下: class TimerTask { public:TimerTask(const std::string& path):…...
Django 美化使用ModelForm的输入框
在初次使用ModelForm时,我的html文件代码如下,主要内容是显示一个卡片式表单,通过循环遍历 form 对象动态生成表单字段 {% extends layout.html %}{% block content %} <div class"container"><div class"c1"&g…...
应用层优秀的共享民宿物联网框架该怎么选?
有一说一,应用层优秀的物联网框架通常能帮助提升用户体验、提高运营效率、节能减排等等优势,很多老板也很注重这个层面的设计和打磨,那么对于选择应用层优秀的共享民宿物联网框架时,大家可以从哪几个关键因素进行考量呢࿱…...
【kafka系列】生产者
目录 发送流程 1. 流程逻辑分析 阶段一:主线程处理 阶段二:Sender 线程异步发送 核心设计思想 2. 流程 关键点总结 重要参数 一、核心必填参数 二、可靠性相关参数 三、性能优化参数 四、高级配置 五、安全性配置(可选࿰…...
HCIA-路由器相关知识和面试问题
二、 路由器 2.1 关于路由器的知识 2.1.1 什么是路由器 路由器是一种网络层互联设备,主要用于连接多个逻辑上分开的网络,实现不同网络之间的数据路由和通信。它能根据网络层地址(如 IP 地址)来转发数据包,在网络中起…...
Unity 获取独立显卡数量
获取独立显卡数量 导入插件包打开Demo 运行看控制台日志 public class GetGraphicCountDemo : MonoBehaviour{public int count;// Start is called before the first frame updatevoid Start(){count this.GetIndependentGraphicsDeviceCount();}}...
【stm32】定时器输出PWM波形(hal库)
一. PWM基本原理 PWM是一种通过调节信号的占空比(Duty Cycle)来控制输出平均电压的技术。占空比是指高电平时间与整个周期时间的比值。例如: - 占空比为50%时,输出平均电压为电源电压的一半。 - 占空比为100%时,输出始…...
Deepseek R1模型本地化部署+API接口调用详细教程:释放AI生产力
文章目录 前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装ollama2部署DeepSeek R1模型删除已存在模型,以7b模型为例 三、DeepSeek API接口调用Cline配置 前言 随着最近人工智能 DeepSeek 的爆火,越来越多的技术大佬们开始关注如…...
Mac ARM 架构的命令行(终端)中,删除整行的快捷键是:Ctrl + U
在 Mac ARM 架构的命令行(终端)中,删除整行的快捷键是: Ctrl U这个快捷键会删除光标所在位置到行首之间的所有内容。如果你想删除光标后面的所有内容,可以使用: Ctrl K这两个快捷键可以帮助你快速清除当…...
用pytorch实现一个简单的图片预测类别
前言: 在阅读本文之前,你需要了解Python,Pytorch,神经网络的一些基础知识,比如什么是数据集,什么是张量,什么是神经网络,如何简单使用tensorboard,DataLoader。 本次模型训练使用的是…...
深度学习框架探秘|TensorFlow:AI 世界的万能钥匙
在人工智能(AI)蓬勃发展的时代,各种强大的工具和框架如雨后春笋般涌现,而 TensorFlow 无疑是其中最耀眼的明星之一。它不仅被广泛应用于学术界的前沿研究,更是工业界实现 AI 落地的关键技术。今天,就让我们…...
Linux: 调整套接字缓冲区大小相关内核参数
Linux: 调整套接字缓冲区大小相关内核参数 内核参数关于套接字缓冲区大小相关的设置,这些参数控制了TCP和UDP套接字的接收和发送缓冲区的最大值、默认值以及动态调整范围。 当前配置 net.core.rmem_max 212992 # 最大接收缓冲区大小(字节&#…...
Linux 服务器部署deepseek
把手教你在linux服务器部署deepseek,打造专属自己的数据库知识库 正文开始 第一步:安装Ollama 打开官方网址:https://ollama.com/download/linux 下载Ollama linux版本 复制命令到linux操作系统执行 [rootpostgresql ~]# curl -fsSL http…...
