发起请求的步骤
下载axios
pnpm i axios
在src/utils中二次封装axios,配置axios请求和响应拦截器,配置基础路径和超时时间。
import axios from "axios";
import { ElMessage } from "element-plus";
const request = axios.create({
baseURL: "/api",
timeout: 5000,
});
request.interceptors.request.use((config) => {
return config;
});
request.interceptors.response.use(
(response) => {
return response.data;
},
(error) => {
let status = error.response.status;
switch (status) {
case 404:
//错误提示信息
ElMessage({ type: "error", message: error.message });
break;
case 500 | 501 | 502 | 503 | 504 | 505:
ElMessage({ type: "error", message: error.message });
break;
case 401:
ElMessage({ type: "error", message: "参数有误" });
break;
}
return Promise.reject(new Error(error.message));
}
);
export default request;
src/api
在src文件夹下创建api文件夹统一管理请求(每个页面都有自己的请求,创建对应模块存储对应模块的API请求并进行类型限制)比如 src/api/home/index.ts | type.ts
引入二次封装的axios,使用enum API {}枚举API请求地址,在分别暴露
import request from "@/utils/request";
enum API {
//获取已有的医院的数据接口地址
HOSPITAL_URL = "/hosp/hospital/",
}
export const reqHospital = (page: number, limit: number) => {
return request.get(API.HOSPITAL_URL + `${page}/${limit}`);
};
配置跨域
配置路由
下载路由:pnpm i vue-router
src/router/index.ts
import { createRouter, createWebHistory } from "vue-router";
export default createRouter({
//路由模式
history: createWebHistory(),
//管理路由
routes: [
{
path: "/home",
component: () => import("@/pages/home/index.vue"),
},
{
path: "/hospital",
component: () => import("@/pages/hospital/index.vue"),
},
{
path: "/",
redirect: "/home",
},
],
//滚动行为:控制滚动条的位置
scrollBehavior() {
return {
left: 0,
top: 0,
};
},
});
入口文件main.ts中引入并use
// 引入路由
import router from "@/router/index";
...
app.use(router);
...
因为项目很多模块需要使用该组件,因此把它封装为全局组件!!!
在src文件夹目录下创建一个index.ts文件:用于注册components文件夹内部全部全局组件!!!
import SvgIcon from './SvgIcon/index.vue';
import type { App, Component } from 'vue';
const components: { [name: string]: Component } = { SvgIcon };
export default {
install(app: App) {
Object.keys(components).forEach((key: string) => {
app.component(key, components[key]);
})
}
}
在入口文件引入src/index.ts文件,通过app.use方法安装自定义插件
import gloablComponent from './components/index';
app.use(gloablComponent);