• vue2项目封装axios(vite打包)


    1.安装

    npm i axios

    2.封装axios

    说明:request.js文件

    1. //对axios进行二次封装
    2. import axios from "axios"
    3. import "nprogress/nprogress.css"
    4. // 当前模块中引入store
    5. // import store from "@/store"
    6. // 引入进度条
    7. import nprogress from "nprogress"
    8. // start代表进度条开始,done表示进度条结束
    9. // 创建axios实例,其实request就是axios
    10. const requests = axios.create({
    11. // 发请求的时候自动出现api
    12. // baseURL:"api",
    13. // 请求超时的时间
    14. timeout: 5000,
    15. })
    16. // 请求拦截器,
    17. requests.interceptors.request.use((config) => {
    18. // config对象中有一个headers请求头
    19. // 进度条开始
    20. // if (store.state.detail.uuid_token) {
    21. // // 请求头添加一个字段userTempId
    22. // config.headers.userTempId = store.state.detail.uuid_token
    23. // }
    24. // 判断需要携带token带到服务器
    25. // if (store.state.user.token) {
    26. // config.headers.token = store.state.user.token
    27. // }
    28. nprogress.start()
    29. return config
    30. })
    31. // 响应拦截器
    32. requests.interceptors.response.use(config => {
    33. // 成功的回调函数,服务器相应数据回来以后,响应拦截器可以检测到
    34. // 进度条结束
    35. nprogress.done()
    36. return config.data
    37. }, error => {
    38. console.log(error);
    39. return Promise.reject(new Error("fail"))
    40. })
    41. export default requests

    3. 请求文件

    说明:index.js文件暴露请求方法。

    1. //导入封装的axios
    2. import request from "./request";
    3. export const getData=()=>{
    4. return request({url:"./data.json",method:'GET'})
    5. }

    4.挂载原型

    说明:将请求方法挂载在vue的原型上面。

    1. import Vue from 'vue';
    2. import 'element-ui/lib/theme-chalk/index.css';
    3. import ElementUI from 'element-ui';
    4. import router from "./router/index.js"
    5. import store from "./store/index.js";
    6. import App from './App.vue';
    7. Vue.use(ElementUI);
    8. //导入api文件
    9. import * as API from "@/api"
    10. new Vue({
    11. el:"#app",
    12. router,
    13. store,
    14. beforeCreate() {
    15. // 挂载vue实例原型身上,一般自己添加的原型都以$命名
    16. Vue.prototype.$API = API;
    17. },
    18. render:(h)=>h(App),
    19. }).$mount();

     5.发起请求

    1. <script>
    2. export default {
    3. name: "Index",
    4. data() {
    5. return {
    6. title: '',
    7. }
    8. },
    9. methods: {
    10. async getData() {
    11. let res = await this.$API.getData()
    12. //解构title
    13. let {title}=res
    14. this.title=title
    15. }
    16. },
    17. mounted() {
    18. this.getData()
    19. }
    20. }
    21. script>
    22. <style scoped>style>

    6.被请求文件

    说明:data.json文件,被请求的文件放置最外层,与src文件同级。

     7.展示

    8.vue.config.js

    1. import {createVuePlugin} from "vite-plugin-vue2"
    2. export default {
    3. plugins: [createVuePlugin({
    4. // 使用 Element UI
    5. globalComponents: true,
    6. })],
    7. server: {
    8. open: true, //自动打开浏览器
    9. port: 80, //端口
    10. },
    11. resolve:{
    12. //别名
    13. alias: [
    14. {
    15. find: '@',
    16. replacement: '/src'
    17. }
    18. ]
    19. }
    20. }

    9.依赖包

    1. {
    2. "name": "vite-vue2",
    3. "private": true,
    4. "version": "0.0.0",
    5. "scripts": {
    6. "dev": "vite",
    7. "build": "vite build",
    8. "preview": "vite preview"
    9. },
    10. "devDependencies": {
    11. "babel-plugin-component": "^1.1.1",
    12. "vite": "^2.9.15",
    13. "vite-plugin-vue2": "^1.9.3"
    14. },
    15. "dependencies": {
    16. "axios": "^1.6.2",
    17. "echarts": "^5.4.3",
    18. "element-ui": "^2.8.2",
    19. "nprogress": "^0.2.0",
    20. "vue": "^2.7.15",
    21. "vue-router": "^3.5.2",
    22. "vue-template-compiler": "^2.7.15",
    23. "vuex": "^3.6.2"
    24. }
    25. }

     9.文件层级

     

  • 相关阅读:
    怎么在谷歌浏览器中安装.crx扩展名的离线chrome插件
    关于smartforms 文本乱码问题
    c#调用谷歌浏览器打开文件 系统找不到指定的文件
    【Excel高阶技巧】条件函数、查找函数、字符串相关函数、公式审核、保护工作表/工作簿、模拟分析、宏
    任务调度平台在服务器集群上的分布式搭建笔记
    JVM 输出 GC 日志导致 JVM 卡住,我 TM 人傻了
    ElasticSearch集群缩容
    springboot整合消息队列——RabbitMQ
    内容 总结
    Apache Spark 在爱奇艺的应用实践
  • 原文地址:https://blog.csdn.net/m0_62785037/article/details/134476523