当前位置:   article > 正文

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

vue2项目打包

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. <template>
  2. <div>
  3. <h1>{{ title }}</h1>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: "Index",
  9. data() {
  10. return {
  11. title: '',
  12. }
  13. },
  14. methods: {
  15. async getData() {
  16. let res = await this.$API.getData()
  17. //解构title
  18. let {title}=res
  19. this.title=title
  20. }
  21. },
  22. mounted() {
  23. this.getData()
  24. }
  25. }
  26. </script>
  27. <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.文件层级

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/1001501
推荐阅读
相关标签
  

闽ICP备14008679号