vue3后台项目结构搭建
环境准备
node:v16.20.2npm:8.19.4
依赖项
dependencies
| 依赖项 | 版本 | 描述 |
|---|---|---|
vue | 3.4.15 | vue框架 |
vue-router | 4.2.5 | 页面路由管理 |
axios | 1.6.7 | http请求库 |
echarts | 5.5.0 | echarts图表 |
pinia | 2.1.7 | 状态管理 |
element-plus | 2.6.0 | ui组件 |
chinese-lunar | 0.1.4 | 阳历转农历 |
chinese-workday | 1.10.0 | 根据日期获取节假日 |
@vueuse/core | 10.9.0 | 工具类 |
devDependencies
| 依赖项 | 版本 | 描述 |
|---|---|---|
@element-plus/icons-vue | 2.3.1 | element-plus 内置图标 icons |
@vitejs/plugin-vue | 5.0.3 | Vite 项目配置 Vue 相关的特殊行为,比如向 Vue 编译器传递相关选项,请查看 |
pinia-plugin-persistedstate | 3.2.1 | 状态处理持久化插件 |
sass | 1.71.1 | scss样式与处理器 |
unplugin-auto-import | 0.17.5 | 自动导入插件 |
unplugin-icons | 0.18.5 | 自动导入-直接在模板中使用图标作为组件。 |
unplugin-vue-components | 0.26.0 | 自动导入组件插件, |
vite | 5.0.11 | vite构建工具 |
vite-plugin-svg-icons | 2.0.1 | 一个svg图标的插件,无需每个svg都发起http请求, 组件可以改变color、size【仅支持单色】, 支持全部iconfont.cn上的svg |
vite-plugin-vue-setup-extend | 0.4.0 | 定义组件名称 |
初始化项目
1 | npm create vue@latest |
按照命令提示进行选择
1 | ✔ Project name: … <your-project-name> |
进入项目
1 | cd <your-project-name> |
1 | npm run dev |
项目目录结构
1 | ── README.md |
这里按照以上工程目录来依次创建文件夹src/api、assets、axios、components、config、icons、layout、plugin、router、store、styles、utils、views、hooks
| 目录名 | 描述 |
|---|---|
| api | api接口 |
| assets | 静态资源 |
| axios | axios封装 |
| components | 组件 |
| config | 配置 |
| icons | 图标 |
| layout | 布局 |
| plugin | 插件 |
| router | 路由 |
| store | 状态管理 |
| styles | 样式 |
| utils | 工具 |
| views | 页面 |
| hooks | hooks |
插件和入口文件配置
插件配置
这里在配置前,请确保package.json中dependencies和devDependencies中已经安装了对应的依赖!
elementui plus
这里有全部导入 按需导入 手动导入三种方式,我这边用的按需导入配置!
按需导入
首先你需要安装unplugin-vue-components 和 unplugin-auto-import这两款插件!
npm install -D unplugin-vue-components unplugin-auto-import
然后把下列代码插入到你的 Vite !
vite.config.js
1 | import { defineConfig } from 'vite' |
引入 elementui icons
1 | npm install @element-plus/icons-vue -S |
新建plugins/icons
icons
1 | import * as ElementPlusIconsVue from "@element-plus/icons-vue"; |
在 main.js 中引入即可!
1 | import { setupElIcons } from '@/plugin/icons'; |
pinia 状态管理
这是一个简单的配置!
main.js
1 | import { createApp } from 'vue' |
下面在项目中我门需要通过
模块化配置!
新建store/index.js
store/index
1 | import { createPinia } from 'pinia' |
新建store/modules/user.js 和 store/modules/system.js
store/modules/user.js
1 | import defaultSetting from "@/config/setting"; |
store/modules/system.js
1 | import { defineStore } from "pinia"; |
为了防止
刷新数据丢失情况!persist: sessionStorage为持久化插件配置,可选择localStorage和sessionStorage方式进行存储!npm install pinia-plugin-persistedstate -S
然后在 index.js 中引入模块即可!
在main.js中引用store/index.js
1 | import { createApp } from 'vue' |
vue-router
新建src/router/index.js
router/index.js
1 | import { createRouter, createWebHistory } from 'vue-router' |
配置路由权限
新建plugins/permission.js
permission
1 | import router from "@/router" |
在main.js中引用router/index.js
1 | import { createApp } from 'vue' |
axios
入口文件main.js
main.js
1 | import './styles/index.scss' |
vite.config.js
vite.config.js
1 | import { fileURLToPath, URL } from 'node:url' |
公共组件
svg-icons
该组件方便我们在项目中使用svg图标!
新建svg-icons组件
components/svg-icons/index.vue
svg-icons
1 | <template> |
入口文件中引用
1 | // 本地SVG图标 |
配置vite.config.js
1 | npm install unplugin-icons -D # 配置自动导入 |
vite.config.js
1 | import Icons from "unplugin-icons/vite"; |
