vue3学习日记5 - 项目起步

 最近发现职场前端用的框架大多为vue,所以最近也跟着黑马程序员vue3的课程进行学习,以下是我的学习记录

视频网址:

Day2-11.项目起步-静态资源引入和ErrorLen安装_哔哩哔哩_bilibili

学习日记:

vue3学习日记1 - 环境搭建-CSDN博客

vue3学习日记2 - 组合式API基础学习-CSDN博客

vue3学习日记3 - 组合式API练习小案例-CSDN博客

vue3学习日记4 - Pinia-CSDN博客

一、项目初始化

1、创建一个vue项目

2、安装相关依赖

3、运行项目

4、创建文件夹

二、git管理

1、概述

Git 是一个功能强大的工具,特别适合需要团队协作、版本控制以及高效管理代码历史的场景。由于它的分布式特性和高效的操作,Git 已经成为现代软件开发中最常用的版本控制系统之一。

基于create-vue创建出来的项目默认没有初始化git仓库,需要我们手动初始化

2、执行命令并完成提交

1、git init

初始化一个新的git仓库

2、git add .

将文件修改为待提交的状态,git add 只是将修改暂时记录在暂存区,真正将改动永久保存到 Git 仓库中,还需要执行 git commit 命令。

注意:后面要加" . "

3、git commit -m "init"

提交文件的更改到 Git 仓库,并附上提交信息。

三、别名路径联想设置

1、什么是别名路径联想提示?

在编写代码的工程中,一旦输入@/,VSCode会立刻联想出src下的所有目录和子文件,同一文件路径访问不容易出错

2、配置别名联想设置

1、正常情况下输入“@/”没有任何反应

2、在项目根目录下新增jsconfig.json文件

新增后,可能会自动到vite.config.js下

{"compilerOptions": {"baseUrl": "./","paths": {"@/*":["src/*"]}}
}

3、配置完成

4、总结

在这只是做联想提示,并没有转换路径

实际路径转换是在文件vite.config.js下

四、elementPlus按需导入

官网:

安装 | Element Plus (element-plus.org)

1、安装包管理器

根据官网API可知输入他给的命令进行安装

输入命令运行结果

2、安装配套的插件

安装成功后,可以在以下文件中找到

3、修改配置文件

根据官网提示编写vite.config.ts相关配置

import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'// elementPlus插件导入
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'// https://vite.dev/config/
export default defineConfig({plugins: [vue(),vueDevTools(),AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))},},
})

4、重新运行一下项目

5、检测elementPlue是否导入成功

<script setup>
</script><template><el-button type="success">Success</el-button>
</template>

运行结果

五、elementPlus主题色修改

1、安装scss

输入命令

npm install sass

2、准备定制样式文件

在文件夹style下,新建文件夹element,在此文件夹下新建文件index.scss

index.scss内容

// styles/element/index.scss
/* 只需要重写你需要的即可 */
@forward 'element-plus/theme-chalk/src/common/var.scss' with ($colors: ('primary': (// 主色'base': #27ba9b,),'success': (// 成功色'base': #1dc779,),'warning': (// 警告色'base': #ffb302,),'danger': (// 危险色'base': #e26237,),'error': (// 错误色'base': #cf4444,),),
);

3、通知Element采用scss语言

4、自动导入样式化进行覆盖

import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'// elementPlus插件导入
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'// https://vite.dev/config/
export default defineConfig({plugins: [vue(),vueDevTools(),AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [// 配置elementPlus采用sass样式配色系统ElementPlusResolver({ importStyle:"sass"})],}),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))},},css:{preprocessorOptions:{scss:{// 自动导入定制化样式文件进行样式覆盖additionalData:`@use "@/styles/element/index.scss" as *;`}}}
})

5、测试

重新运行项目,按钮颜色改变,修改成功

六、axios相关配置

1、安装axios

命令行中输入" npm install axios "

2、axios基础封装

在utils文件夹下新建文件http.js

// axios基础封装// 导入axios
import axios from "axios";
// 创建一个axios实例
const httpInstance = axios.create({// 设置接口基地址baseURL:'http://pcapi-xiaotuxian-front-devtest.itheima.net',// 设置超时时间timeout:5000
})// 拦截器// axios请求拦截器
httpInstance.interceptors.request.use(config => {return config
}, e => Promise.reject(e))// axios响应式拦截器
httpInstance.interceptors.response.use(res => res.data, e => {return Promise.reject(e)
})// 导出
export default httpInstance

3、API

在api文件夹下testAPI.js

// axios基础封装// 导入axios
import axios from "axios";
// 创建一个axios实例
const httpInstance = axios.create({// 设置接口基地址baseURL:'http://pcapi-xiaotuxian-front-devtest.itheima.net',// 设置超时时间timeout:5000
})// 拦截器// axios请求拦截器
httpInstance.interceptors.request.use(config => {return config
}, e => Promise.reject(e))// axios响应式拦截器
httpInstance.interceptors.response.use(res => res.data, e => {return Promise.reject(e)
})// 导出
export default httpInstance

4、测试

在main.js中调用方法

// 测试接口函数
import { getCategory } from '@/apis/testAPI'
getCategory().then( res => {console.log(res)
})

5、运行结果

6、问题小结

如果项目里面不同的业务模块需要的接口地址不同,该如何来做?

axios.create() 方法可以执行多次,每次执行都会生成一个新的实例,比如:
const http1 = axios.create({ baseURL: 'url1' })
const http2 = axios.create({ baseURL: 'url2' })

七、项目整体路由设计

1、一级路由

设计首页和登录页的路由(一级路由)

1、路由设计原则

找内容切换的区域,如果是页面整体切换,则为一级路由

2、删除文件夹views下面所有的文件

3、在views文件夹下建立文件夹Layout和Login,并且分别在底下建立文件index.vue

Layout下index.vue内容
<template><div>我是首页</div>
</template>
Login下index.vue内容
<template><div>我是登录页</div>
</template>

你会发现一直报错,将鼠标放上去报错信息如下

原因是,vue3规定命名必须有两个单词组成,index不符合规范,要解决此问题,只需要让其不强制要求组件命名即可

4、修改router文件夹下index.js

import { createRouter, createWebHistory } from 'vue-router'
import Login from '@/views/Login/index.vue'
import Layout from '@/views/Layout/index.vue'/***  createRouter : 创建router实例对象*  createWebHistory :创建history模式的路由*/
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',component: Layout,},{path: '/login',component:Login},],
})export default router

5、在App.vue使用

<script setup>
</script><template><!-- 引入路由 --><router-view/>
</template>

6、运行结果

2、二级路由

1、路由设计原则

找内容切换的区域,如果是在一级路由页的内部切换,则为二级路由

2、在views文件夹下建立文件夹Home和Categorize,并且分别在底下建立文件index.vue

3、在routes文件夹下的index.js添加二级路由

import { createRouter, createWebHistory } from 'vue-router'
import Login from '@/views/Login/index.vue'
import Layout from '@/views/Layout/index.vue'
import Home from '@/views/Home/index.vue'
import Categorize from '@/views/Categorize/index.vue'/***  createRouter : 创建router实例对象*  createWebHistory :创建history模式的路由*/
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',component: Layout,children:[{// 当默认显示时,直接滞空就好path:'',component:Home},{path:'categorize',component:Categorize}]},{path: '/login',component:Login},],
})export default router

4、在Layout文件夹下index.js中添加二级路由入口

<template><div>我是首页</div><router-view/>
</template>

5、运行结果

3、问题小结

1、路由设计的依据是什么

内容切换的方式

2、默认二级路由如何进行设置

path配置置空

八、静态资源存放

图片资源 : 把images文件夹放到assets目录下 样式资源 : 把common.scss文件放到styles目录下

可以安装以下插件,编写代码时显示报错信息

九、scss文件的自动导入

在项目里一些组件共享的色值会以scss变量的方式统一放到一个名为var.scss的文件中,正常组件中使用,需要先导入scss文件,再使用内部的变量,比较繁琐,自动导入可以免去手动导入的步骤,直接使用内部的变量

1、在style文件夹下新建文件var.scss

$xtxColor:#27ba9b; 
$helpColor:#e26237; 
$sucColor:#1dc779; 
$warnColor:#ffb302; 
$priceColor:#cf4444

2、修改配置文件

3、测试(App.vue)

<script setup>
</script><template><!-- 引入路由 --><router-view/><div class="sc">哈哈哈哈哈</div>
</template><style lang="scss" scoped>
.sc{color: $warnColor;
}
</style>

4、运行结果

问题小结

1、git初始化提交报错

原因

git没有配置用户名和邮箱地址

解决

设置邮箱和用户名

运行以下命令可查看设置是否正确

git config --global user.name git config --global user.email

运行结果

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

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

相关文章

计算机组成原理--笔记一

目录 一.计算机硬件的基本组成 1.早期冯诺依曼机的结构 2.现代计算机的结构 二.各个硬件的工作原理 1.主存储器 i. 读取数据 ii. 写入数据 1.1 基本组成 2.运算器 3.控制器 一.计算机硬件的基本组成 1.早期冯诺依曼机的结构 “存储程序”&#xff0c;将指令以二进制的形式输入…

漫话架构师|什么是系统架构设计师(开篇)

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 关注犬余&#xff0c;共同进步 技术从此不孤单

CV(10)--目标检测

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 目标检测 object detection&#xff0c;就是在给定的图片中精确找到物体所在位置&#xff0c;并标注出物体的类别;输出的是分类类别label物体的外框&#xff08;x, y, width, height&#xff09;。 目标检测算法&#xff1a…

【Qt】01-了解QT

踏入QT的殿堂之路 前言一、创建工程文件1.1 步骤介绍1.2 编译介绍方法1、方法2、编译成功 二、了解框架2.1 main.cpp2.2 .Pro文件2.2.1 注释需要打井号。2.2.2 F1带你进入帮助模式2.2.3 build文件 2.3 构造函数 三、编写工程3.1 main代码3.2 结果展示 四、指定父对象4.1 main代…

【深度学习】关键技术-激活函数(Activation Functions)

激活函数&#xff08;Activation Functions&#xff09; 激活函数是神经网络的重要组成部分&#xff0c;它的作用是将神经元的输入信号映射到输出信号&#xff0c;同时引入非线性特性&#xff0c;使神经网络能够处理复杂问题。以下是常见激活函数的种类、公式、图形特点及其应…

3.flask蓝图使用

构建一个目录结构 user_oper.py from flask import Blueprint, request, session, redirect, render_template import functools # 创建蓝图 user Blueprint(xkj, __name__)DATA_DICT {1: {"name": "张三", "age": 22, "gender": …

React第二十二章(useDebugValue)

useDebugValue useDebugValue 是一个专为开发者调试自定义 Hook 而设计的 React Hook。它允许你在 React 开发者工具中为自定义 Hook 添加自定义的调试值。 用法 const debugValue useDebugValue(value)参数说明 入参 value: 要在 React DevTools 中显示的值formatter?:…

【漏洞分析】DDOS攻防分析

0x00 UDP攻击实例 2013年12月30日&#xff0c;网游界发生了一起“追杀”事件。事件的主角是PhantmL0rd&#xff08;这名字一看就是个玩家&#xff09;和黑客组织DERP Trolling。 PhantomL0rd&#xff0c;人称“鬼王”&#xff0c;本名James Varga&#xff0c;某专业游戏小组的…

【 PID 算法 】PID 算法基础

一、简介 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&#xff09;、Differential&#xff08;微分&#xff09;的缩写。也就是说&#xff0c;PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。 顾名思义&#xff0c;…

PyTorch使用教程(1)—PyTorch简介

PyTorch是一个开源的深度学习框架&#xff0c;由Facebook人工智能研究院&#xff08;FAIR&#xff09;于2016年开发并发布&#xff0c;其主要特点包括自动微分功能和动态计算图的支持&#xff0c;使得模型建立更加灵活‌。官网网址&#xff1a;https://pytorch.org。以下是关于…

PyTorch框架——基于深度学习YOLOv5神经网络水果蔬菜检测识别系统

基于深度学习YOLOv5神经网络水果蔬菜检测识别系统&#xff0c;其能识别的水果蔬菜有15种&#xff0c;# 水果的种类 names: [黑葡萄, 绿葡萄, 樱桃, 西瓜, 龙眼, 香蕉, 芒果, 菠萝, 柚子, 草莓, 苹果, 柑橘, 火龙果, 梨子, 花生, 黄瓜, 土豆, 大蒜, 茄子, 白萝卜, 辣椒, 胡萝卜,…

Mac玩Steam游戏秘籍!

Mac玩Steam游戏秘籍&#xff01; 大家好&#xff01;最近有不少朋友在用MacBook玩Steam游戏时遇到不支持mac的问题。别担心&#xff0c;我来教你如何用第三方工具Crossover来畅玩这些不支持的游戏&#xff0c;简单又实用&#xff01; 第一步&#xff1a;下载Crossover 首先&…

【网络篇】IP知识

IPv4首部与IPv6首部 IPv4相对于IPv6的好处&#xff1a; 1.IPv6可自动配置&#xff0c;即使没有DHCP服务器也可以实现自动分配IP地址&#xff0c;实现即插即用。 2.IPv6包首部长度采用固定40字节&#xff0c;删除了选项字段&#xff0c;以及首部校验和&#xff0c;简化了首部…

我的年度总结

这一年的人生起伏&#xff1a;从曙光到低谷再到新的曙光 其实本来没打算做年度总结的&#xff0c;无聊打开了帅帅的视频&#xff0c;结合自己最近经历的&#xff0c;打算简单聊下。因为原本打算做的内容会是一篇比较丧、低能量者的呻吟。 实习生与创业公司的零到一 第一段工…

Vue脚手架开发 Vue2基础 VueRouter的基本使用 vue-router路由案例

vue-router路由 Vue脚手架开发&#xff0c;创建项目&#xff1a;https://blog.csdn.net/c_s_d_n_2009/article/details/144973766 Vue Router&#xff0c;Vue Router | Vue.js 的官方路由&#xff0c;Vue.js 的官方路由&#xff0c;为 Vue.js 提供富有表现力、可配置的、方便…

Windows远程桌面网关出现重大漏洞

微软披露了其Windows远程桌面网关&#xff08;RD Gateway&#xff09;中的一个重大漏洞&#xff0c;该漏洞可能允许攻击者利用竞争条件&#xff0c;导致拒绝服务&#xff08;DoS&#xff09;攻击。该漏洞被标识为CVE-2025-21225&#xff0c;已在2025年1月的补丁星期二更新中得到…

c语言----------内存管理

内存管理 目录 一。作用域1.1 局部变量1.2 静态(static)局部变量1.3 全局变量1.4 静态(static)全局变量1.5 extern全局变量声明1.6 全局函数和静态函数1.7 总结 二。内存布局2.1 内存分区2.2 存储类型总结2.3内存操作函数1) memset()2) memcpy()3) memmove()4) memcmp() 2.4 堆…

【2024年华为OD机试】 (C卷,100分)- 堆栈中的剩余数字(Java JS PythonC/C++)

一、问题描述 题目描述 向一个空栈中依次存入正整数&#xff0c;假设入栈元素 n(1<n<2^31-1)按顺序依次为 nx…n4、 n3、n2、 n1, 每当元素入栈时&#xff0c;如果 n1n2…ny(y 的范围[2,x]&#xff0c; 1<x<1000)&#xff0c;则 n1~ny 全部元素出栈&#xff0c;重…

Java安全—SPEL表达式XXESSTI模板注入JDBCMyBatis注入

前言 之前我们讲过SpringBoot中的MyBatis注入和模板注入的原理&#xff0c;那么今天我们就讲一下利用以及发现。 这里推荐两个专门研究java漏洞的靶场&#xff0c;本次也是根据这两个靶场来分析代码&#xff0c;两个靶场都是差不多的。 https://github.com/bewhale/JavaSec …

51单片机入门基础

目录 一、基础知识储备 &#xff08;一&#xff09;了解51单片机的基本概念 &#xff08;二&#xff09;掌握数字电路基础 &#xff08;三&#xff09;学习C语言编程基础 二、开发环境搭建 &#xff08;一&#xff09;硬件准备 &#xff08;二&#xff09;软件准备 三、…