vue3下的项目src目录架构以及详解

文章详细介绍了Vue3项目中的src目录结构,包括api目录用于存放后端请求,components包含业务组件,constant存储常量,directive定义自定义指令,libs封装通用组件,router管理路由,store使用vuex进行状态管理,styles处理CSS样式,以及views定义视图组件。还提到了axios的使用和自定义拦截器,以及第三方库的引入。
摘要由CSDN通过智能技术生成

vue3下的项目src目录架构以及详解

先给结论

在这里插入图片描述

各个目录详细解释

api: 发送后端的请求的各个请求函数

示例:
这是request工具函数

//utils/request.js
import axios from 'axios'
import { getSecret } from '@/utils'
import store from '@/store'
const server = axios.create({
  baseURL: import.meta.env.VITE_BASE_URL,
  timeout: 5000
})

server.interceptors.request.use(
  (config) => {
    const headers = config.headers || {}
    config.headers = {
      Authorization: `Bearer ${store.getters.token}`, // 请求头中携带token
      ...headers,
      ...getSecret()
    }
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

server.interceptors.response.use(
  (response) => {
    const { success, message, data } = response.data
    console.log(response.data)
    if (success) {
      return data
    } else {
      return Promise.reject(message)
    }
  },
  (error) => {
    return Promise.reject(error)
  }
)

export default server

这是api下的某个文件

//api文件夹下的某个接口
import request from '@/utils/request'  //导入请求函数(上面一个函数就是request函数)

//每个category页面要通过这个接口获取数据
export const getCategories = () => {
  return request({
    url: 'category'
  })
}
assets:资源文件夹(如css,icon,image等)

在这里插入图片描述

component (业务组件)

什么叫业务组件呢?业务组件,与具体业务有关。
在这里插入图片描述
在B站上,番剧这个组件需要在具体具体页面显示,其他网站不会出现番剧这个组件,因此可以认为是具体的业务组件

constant(vue项目中的常量,如css主体色,屏幕的最小宽度等等)(注意的是,一般大写表示为常量)
// 主题极简白
export const THEME_LIGHT = 'THEME_LIGHT'
// 主题极夜黑
export const THEME_DARK = 'THEME_DARK'
// 主题跟随系统
export const THEME_SYSTEM = 'THEME_SYSTEM'
directive(vue自定义指令)

我们常用的指令如v-for,v-mode等等都是vue官方指令,这个文件夹可以自定义指令

//自定义的一个指令,具体功能是将某个元素的背景设为某个值
export default {
  beforeMount(el, { value }) {
    el.style.backgroundColor = value
  }
}
//这个div将会展示为红色背景
<div
        v-bg-color="red"
      >red</div>
libs:通用组件

在这里插入图片描述
还是上面那个图,番剧这个业务组件可以抽象为一个通用组件;内部上下左右居中的字体外加一个浅灰色背景。此时国创这个业务组件也可以使用这个通用组件。

router:路由

在这里插入图片描述
路由使用index.js引入各个模块

store:vuex模块

在这里插入图片描述
index.js:引入各个模块
getters.js:定义快捷访问各个模块的get方法

//getters.js
export default {
  categorys(state) {
    return state.categorys.categorys
  },
  themeType(state) {
    return state.theme.themeType
  },
}
styles:css样式的通用处理模块(类似utils文件夹)(如一个过渡动画可以反复使用,消除浮动的scss函数等)
//面包屑的过渡动画
.breadcrumb-enter-active,
.breadcrumb-leave-active {
  transition: all 0.25s;
}

.breadcrumb-enter-from,
.breadcrumb-leave-active {
  opacity: 0;
  transform: translateX(20px);
}

.breadcrumb-leave-active {
  position: absolute;
}
//路由的过渡动画
/* fade-transform */
.fade-transform-leave-active,
.fade-transform-enter-active {
  transition: all 0.5s;
}

.fade-transform-enter-from {
  opacity: 0;
  transform: translateX(-30px);
}

.fade-transform-leave-to {
  opacity: 0;
  transform: translateX(30px);
}
vendor:外部的函数模块(这里常常要引入第三方接口)

比如因为短信验证码接口,会给你一个官方的sdk,这里可以引入进去。

下图展示了引入人类行为认证的滑块
在这里插入图片描述

views:vue视图

在这里插入图片描述
番剧这个组件是可视化的,用户可以看见的就是视图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值