后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0916)

embedded/2024/9/22 16:55:19/

接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835

接口根路径: http://big-event-vue-api-t.itheima.net

本项目的技术栈 本项目技术栈基于 ES6、vue3、pinia、vue-router 、vite 、axios 和 element-plus

http://smart-shop.itheima.net/index.php?s=/api

请添加图片描述
项目页面介绍请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

一、pnpm 包管理器 - 创建项目

一些优势:比同类工具快 2倍 左右、节省磁盘空间… https://www.pnpm.cn/

安装方式:

npm install -g pnpm

创建项目:

pnpm create vue

请添加图片描述
请添加图片描述

pnpm format:基于prettier格式化

二、 ESLint & prettier 配置代码风格

环境同步:

  1. 安装了插件 ESlint,开启保存自动修复

  2. 禁用了插件 Prettier,并关闭保存自动格式化

 // Eslint插件+ VSCode配置,实现自动化格式修复"editor.codeActionsOnSave": {"source.fixAll": true
},
// 关闭保存自动格式化,目的:为了防止保存时与EsLint插件冲突
"editor.formatOnSave": false,
// ESlint插件 + Vscode配置 实现自动格式化修复

请添加图片描述
配置文件 .eslintrc.cjs

  1. prettier 风格配置 https://prettier.io

    1. 单引号

    2. 不使用分号

    3. 每行宽度至多80字符

    4. 不加对象|数组最后逗号

    5. 换行符号不限制(win mac 不一致)

  2. vue组件名称多单词组成(忽略index.vue

  3. props解构(关闭)

  rules: {'prettier/prettier': ['warn',{singleQuote: true, // 单引号semi: false, // 无分号printWidth: 80, // 每行宽度至多80字符trailingComma: 'none', // 不加对象|数组最后逗号endOfLine: 'auto' // 换行符号不限制(win mac 不一致)}],'vue/multi-word-component-names': ['warn',{ignores: ['index'] // vue组件名称多单词组成(忽略index.vue)}],'vue/no-setup-props-destructure': ['off'], // 关闭 props 解构的校验// 💡 添加未定义变量错误提示,create-vue@3.6.3 关闭,这里加上是为了支持下一个章节演示。'no-undef': 'error'}

总结

请添加图片描述

三、基于 husky 的代码检查工作流

请添加图片描述
husky 是一个 git hooks 工具 ( git的钩子工具,可以在特定时机执行特定的命令 )

husky 配置

  1. git初始化 git init

  2. 初始化 husky 工具配置 https://typicode.github.io/husky/

pnpm dlx husky-init && pnpm install
  1. 修改 .husky/pre-commit 文件
pnpm lint

**问题:**默认进行的是全量检查,耗时问题,历史问题。

lint-staged 配置

  1. 安装
pnpm i lint-staged -D
  1. 配置 package.json
{// ... 省略 ..."lint-staged": {"*.{js,ts,vue}": ["eslint --fix"]}
}{"scripts": {// ... 省略 ..."lint-staged": "lint-staged"}
}
  1. 修改 .husky/pre-commit 文件
pnpm lint-staged

四、调整项目目录

默认生成的目录结构不满足我们的开发需求,所以这里需要做一些自定义改动。主要是两个工作:

  • 删除初始化的默认文件
  • 修改剩余代码内容
  • 新增调整我们需要的目录结构
  • 拷贝初始化资源文件,安装预处理器插件
  1. 删除文件

请添加图片描述
2请添加图片描述
2. 修改内容

src/router/index.js

import { createRouter, createWebHistory } from 'vue-router'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: []
})export default router

src/App.vue

<script setup></script><template><div><router-view></router-view></div>
</template><style scoped></style>

src/main.js

import { createApp } from 'vue'
import { createPinia } from 'pinia'import App from './App.vue'
import router from './router'const app = createApp(App)app.use(createPinia())
app.use(router)
app.mount('#app')
  1. 新增需要目录 api utils
    请添加图片描述
  2. 将项目需要的全局样式 和 图片文件,复制到 assets 文件夹中, 并将全局样式在main.js中引入
import '@/assets/main.scss'
  • 安装 sass 依赖
pnpm add sass -D

五、VueRouter4 路由代码解析

基础代码解析

import { createRouter, createWebHistory } from 'vue-router'// createRouter 创建路由实例,===> new VueRouter()
// 1. history模式: createWebHistory()   http://xxx/user
// 2. hash模式: createWebHashHistory()  http://xxx/#/user// vite 的配置 import.meta.env.BASE_URL 是路由的基准地址,默认是 ’/‘
// https://vitejs.dev/guide/build.html#public-base-path// 如果将来你部署的域名路径是:http://xxx/my-path/user
// vite.config.ts  添加配置  base: my-path,路由这就会加上 my-path 前缀了const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: []
})export default router

import.meta.env.BASE_URL 是Vite 环境变量:https://cn.vitejs.dev/guide/env-and-mode.html

router/index.js

import {createRouter,createWebHistory// createWebHashHistory
} from 'vue-router'// createRouter创建路由实例
/* 
配置history模式
1.history模式:createWebHistory  地址栏不带#
2.hash模式:createWebHashHistory  地址栏带 #*/// 是否为开发环境
console.log(import.meta.env.DEV)// Vite中的环境变量 import.meta.env.VITE_BASE_URL,就是vite.config.js中的base配置项
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: []
})export default router

Vite.config.js

import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(), vueDevTools()],// 配置服务的基本路径为 / 开始base:'/',resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}}
})

App.vue

vue"><script setup>
import { useRoute } from 'vue-router';
import { useRouter } from 'vue-router'// 在Vue3 CommpositionAPI中,
// 1.获取路由对象router需要使用useRouter
// const  router =  useRouter()
// 2.获取路由参数route useRoute
// const  route =  useRoute()const router = useRouter()
const route = useRoute()
const goList = ()=>{// setup中的this指向undefined// this.$router.push('/list')console.log(router,route);router.push('list')}
</script><template><div>
我是APP组件
<button @click="$router.push('/home')">跳首页</button>
<button @click="goList">跳列表页</button></div>
</template><style lang="scss" scoped></style>

请添加图片描述
下期见~~~


http://www.ppmy.cn/embedded/115137.html

相关文章

【编程基础知识】哪些行为算跨域,跨域会引发什么问题,怎么解决

哪些行为算跨域&#xff08;CORS, Cross-Origin Resource Sharing&#xff09; 跨域是指浏览器在处理网页时&#xff0c;由于同源策略&#xff08;Same-Origin Policy&#xff09;的限制&#xff0c;限制了来自与当前请求网页不同源的资源请求。这里的“源”&#xff08;Origi…

Java面试篇-AOP专题(什么是AOP、AOP的几个核心概念、AOP的常用场景、使用AOP记录操作日志、Spring中的事务是如何实现的)

文章目录 1. 什么是AOP2. AOP的几个核心概念3. AOP的常用场景4. 使用AOP记录操作日志4.1 准备工作4.1.1 引入Maven依赖4.1.2 UserController.java4.1.3 User.java4.1.4 UserService.java 4.2 具体实现&#xff08;以根据id查询用户信息为例&#xff09;4.2.1 定义切面类&#x…

[SDX35+WCN6856]SDX35 + WCN6856 使用QCMAP启动WiFi操作方法

SDX35 SDX35介绍 SDX35设备是一种多模调制解调器芯片,支持 4G/5G sub-6 技术。它是一个4nm芯片专为实现卓越的性能和能效而设计。它包括一个 1.9 GHz Cortex-A7 应用处理器。 SDX35主要特性 ■ 3GPP Rel. 17 with 5G Reduced Capability (RedCap) support. Backward compati…

社交电商中“信任”基础与“链动 2+1 模式 O2O 商城小程序”的价值探索

摘要&#xff1a;本文深入探讨了在基于社交的商业模式中&#xff0c;“信任”作为重要基础条件的关键作用。详细分析了在产品同质化日益严重的当下&#xff0c;人与人之间口口相传的宣传方式优势。同时&#xff0c;全面引入“链动 21 模式 O2O 商城小程序”&#xff0c;深入阐述…

智谱AI:CogVideoX-2b——视频生成模型的得力工具

智谱AI&#xff1a;CogVideoX-2b——视频生成模型的得力工具 文章目录 CogVideoX 简介——它是什么&#xff1f;CogVideoX 具体部署与实践指南一、创建丹摩实例二、配置环境和依赖三、上传模型与配置文件四、开始运行五、Web UI 演示 CogVideoX 简介——它是什么&#xff1f; …

RK3568笔记六十一:MIPI摄像头应用程序编写

若该文为原创文章,转载请注明原文出处。 使用V4L2方式采集摄像头。 使用正点原子的例程测试没通过,后面使用一口君的测试采集到了摄像头 记录过程。 详细参考Camera | 4.瑞芯微平台MIPI摄像头应用程序编写-CSDN博客 一、介绍 V4L2设备驱动框架向应用层提供了一套统一、标…

使用 LocalStorage 提升前端体验

使用 LocalStorage 提升前端体验 在这个项目&#xff08;www.studytool.site&#xff09;中&#xff0c;本地缓存 (localStorage) 作为一种持久化存储机制&#xff0c;被广泛应用于用户设置和数据保存&#xff0c;确保用户在刷新页面或关闭浏览器后&#xff0c;仍然能够保留自…

CefSharp_Vue交互(Element UI)_WinFormWeb应用(3)---通过页面锁屏和关机(含示例代码)

一、预览 实现功能:通过vue标题栏按钮锁屏和关机 1.1 预览 1.2 代码 锁屏代码csharp LockWorkStation() 关机代码chsharp 注意vue代码参数和此参数一致(0/1/2) 方法ExitWindowsEx()