展现自己小技能

技能 十一 按模块组织路由文件&api 文件 &store模块

下载.png在前端应用中,按模块组织路由文件、API文件和store模块可以提高代码的可维护性和可扩展性。下面我将为您提供一些示例代码和结构来展示如何按模块组织这些文件。

1. 路由文件:

下载.png在路由文件中,您可以根据模块划分不同的路由配置。以下是一个示例的路由文件结构

- routes
  - index.js               // 主路由文件,导入并组合所有模块的路由配置
  - module1.js             // 模块1的路由配置
  - module2.js             // 模块2的路由配置

下载.png在主路由文件 index.js 中,您可以导入并组合所有模块的路由配置,然后导出最终的路由配置供应用程序使用。

// index.js

import { createRouter, createWebHistory } from 'vue-router';
import module1Routes from './module1';
import module2Routes from './module2';


const router = createRouter({
  history: createWebHistory(),
  routes: [
    ...module1Routes,
    ...module2Routes,
    // 其他路由配置
  ],
});



export default router;


下载.png模块的路由文件(例如 module1.js)可以按照需要定义该模块的路由配置。

// module1.js

const module1Routes = [
  {
    path: '/module1',
    component: Module1Component,
    // 其他路由配置
  },
  // 其他模块1的路由配置
];



export default module1Routes;


2. API文件:

下载.png在API文件中,您可以将API请求按模块组织和管理。以下是一个示例的API文件结构

- api
  - index.js               // 主API文件,导入并组合所有模块的API请求
  - module1.js             // 模块1的API请求
  - module2.js             // 模块2的API请求


下载.png在主API文件 index.js 中,您可以导入并组合所有模块的API请求,然后导出最终的API请求供应用程序使用。

// index.js

import module1API from './module1';
import module2API from './module2';





const api = {
  ...module1API,
  ...module2API,
  // 其他模块的API请求
};



export default api;


下载.png模块的API文件(例如 module1.js)可以按照需要定义该模块的API请求。

// module1.js

const module1API = {
  getUsers() {
    // 发起获取用户列表的API请求
  },
  // 其他模块1的API请求
};

export default module1API;



3. Store模块:

下载.png在使用状态管理库(如Vuex)时,您可以按模块组织store模块。以下是一个示例的store模块结构:

- store
  - index.js               // 主store文件,导入并组合所有模块的store模块
  -





技能十二 在新项目中axios进行封装

下载.png当在前端项目中使用 Axios 进行封装时,可以创建一个统一的 HTTP 请求库,用于发送请求并处理响应。以下是一个示例的 Axios 封装:

// http.js




import axios from 'axios';





// 创建 Axios 实例
const instance = axios.create({
  baseURL: 'https://api.example.com', // 设置基本的 API URL
  timeout: 5000, // 设置请求超时时间
  headers: {
    'Content-Type': 'application/json', // 设置请求头部
  },
});

// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    // 可以在此处添加认证信息等
    return config;
  },
  (error) => {
    // 处理请求错误
    return Promise.reject(error);
  }
);

// 响应拦截器
instance.interceptors.response.use(
  (response) => {
    // 处理响应数据
    return response.data;
  },
  (error) => {
    // 处理响应错误
    return Promise.reject(error);
  }
);

export default instance;

下载.png在上述示例中,我们创建了一个 Axios 实例,并设置了一些常用的配置,如基本的 API URL、请求超时时间和请求头部。然后,我们添加了请求拦截器和响应拦截器来进行必要的处理。

在您的项目中,可以通过导入该封装后的 Axios 实例来发送 HTTP 请求:

// 使用 http.js 发送请求




import http from './http';





// 发送 GET 请求
http.get('/users')
  .then((response) => {
    // 处理响应数据
    console.log(response);
  })
  .catch((error) => {
    // 处理错误
    console.error(error);
  });

// 发送 POST 请求
http.post('/users', { name: 'John Doe' })
  .then((response) => {
    // 处理响应数据
    console.log(response);
  })
  .catch((error) => {
    // 处理错误
    console.error(error);
  });

下载.png通过这种方式,您可以在整个项目中使用统一的 HTTP 请求库进行 API 请求,并在需要时根据需要进行进一步的封装和处理。这样可以提高代码的可读性和可维护性,并使请求逻辑更加清晰和集中化。

技能十三 画图说明从登录到进入主页的整个环节-画图

画图分析

登录流程.png

技能十四 能从针对情况通过环境变量配置axios的基地址

是的,前端可以通过环境变量来配置 Axios 的基地址,以便根据不同的环境切换API的地址。这样可以使您的应用在开发、测试和生产环境中使用不同的API地址,而无需更改代码。以下是一个示例:

// http.js




import axios from 'axios';





const baseURL = process.env.VUE_APP_API_BASE_URL || 'https://api.example.com';

const instance = axios.create({
  baseURL: baseURL,
  timeout: 5000,
  headers: {
    'Content-Type': 'application/json',
  },
});



// 请求拦截器和响应拦截器同上
// ...

export default instance;

下载.png在上述示例中,我们使用了环境变量 VUE_APP_API_BASE_URL 来配置 Axios 的基地址。在开发环境或者使用构建工具(如 Vue CLI)时,您可以在对应的环境配置文件(如 .env.development)中设置该环境变量。这样,在开发环境下,Axios 将使用您配置的开发 API 地址;在生产环境下,Axios 将使用默认的 API 地址(https://api.example.com)。

下载.png您可以根据自己的项目配置和工具链来设置环境变量,并根据需要进行相应的调整。请注意,不同的工具和框架可能具有不同的环境变量设置方式,所以您需要根据自己的情况进行相应的调整。

技能十五 能说出跨域的原因并能正确配置开发环境下的接口代理

下载.png跨域是指在浏览器中运行的JavaScript代码试图访问不同源(域、协议或端口)的资源时出现的安全机制。浏览器为了防止恶意的跨域请求,会实施同源策略,限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。

以下是一些常见的跨域原因:

下载.png1. 不同的域:当请求的域名不同(例如,example.comapi.example.com)时,会触发跨域问题。
下载.png2. 不同的协议:当请求的协议不同(例如,http 和 https)时,也会触发跨域问题。

下载.png3. 不同的端口:当请求的端口号不同(例如,example.comexample.com:8080)时,也会触发跨域问题。

下载.png为了解决跨域问题,前端可以通过配置开发环境下的接口代理来实现。接口代理将客户端请求转发到目标服务器,以解决跨域请求的限制。

以下是一个示例的接口代理配置:

// vue.config.js




module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://api.example.com', // 目标服务器的地址
        changeOrigin: true, // 改变请求来源,设置为 true 可以避免跨域问题
        pathRewrite: {
          '^/api': '', // 重写请求路径,将 /api 替换为空字符串
        },
      },
    },
  },
};


下载.png上述示例中,我们通过配置 vue.config.js 文件中的 devServer 来进行接口代理。我们将所有以 /api 开头的请求转发到目标服务器 http://api.example.com 上,并设置 changeOrigintrue 来改变请求来源,以避免跨域问题。pathRewrite 用于重写请求路径,将 /api 替换为空字符串。

下载.png这样,在开发环境中,您可以将请求的地址设置为 /api 开头,例如 /api/users,代理服务器会将请求转发到目标服务器上,从而解决跨域问题。

下载.png请注意,不同的前端开发框架和工具可能有不同的配置方式,上述示例适用于 Vue CLI 项目。您需要根据自己的项目配置和工具链来进行相应的调整。

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY8OkWPE' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片