vite+vue3项目中js方法调用

hykeda4年前Vue2583

这这里一创建一个axios接口demo为例:

首先安装axios,打开官方GitHub:https://github.com/axios/axios

或者访问中文网站:https://www.axios-http.cn/docs/intro

1、在终端输入:

 npm install axios

进行安装

2、安装成功后:

在vite项目的src目录下新建一个api文件夹

创建一个request.js,

import axios from 'axios'

    const Api = axios.create({
        baseURL:'接口地址'
    });


  //3. 请求拦截器 ==> 前端给后端发送数据[ 没有到后端 ]
  //做的事情:headers给后端传递token
  Api.interceptors.request.use(config => {
        console.log( 1 );
        return config;
      }, error => {
        Promise.reject(error);
      });
 
      //4.响应拦截器 ==> 后端给前端返回数据[ 前端到后端了 ]
      Api.interceptors.response.use(
        (response) => {
            return response.data.data;
        },
        error => {
          return Promise.reject(new Error(error.response.data))
        }
      )
   
export default Api;


然后我们创建一个方法工厂,在同一目录下面:factory.js

1、方法一

import Api from "./request"

const Factory = {

    getMemberData:()=>{
        return Api({
            'url':'api/gerUserlist',
        })
           
    },
    getOtherMsg:()=>{
        return Api({
            'url':'api/msg',
            'method':'post'
        })
    }

}

export default Factory

调用方法:

import fac from '../../api/factory'
onMounted(()=>{
    fac.getMemberData().then(function(res){
       console.log(res.list);
       //navList.value = res.list;
    })
})

2、方法二

如果将当前Factory注入到全局变量中调用,在main.js 中添加:

import { createApp } from 'vue'
//import './style.css'
import App from './App.vue'
import router from './router'
import Factory from './api/factory'
const app = createApp(App)
app.config.globalProperties.$Factory = Factory;
app.use(router);

app.mount('#app')

在页面中调用:

注:页面中类似ref是import使用插件按需引入了。

const { proxy } = getCurrentInstance(); //通过 全局使用工具类 getCurrentInstance 方法解构出 proxy

let navList = ref([]);

onMounted(()=>{

     proxy.$Factory.getMemberData().then(function(res){ //通过proxy中的方法调用

       console.log(res.list);
       navList.value = res.list;
    })

})

3、方法三

factory.js文件

import Api from "./request"

export function getMemberData(){
    return Api({
        'url':'api/slider/getSliders',
    })
       
}

export function getlist(){
    return Api({
        'url':'api/slider/getSliders',
    })
       
}

页面调用:

import { getMemberData,getlist } from '../../api/factory' //引入factory文件,然后解构出两个方法

let navList = ref([]);

onMounted(()=>{
   
    getlist().then(function(res){ //直接调用方法名
       console.log(res.list);
       navList.value = res.list;
    })

})



相关文章

页面直接使用ElementUI,官方提供的表格代码,样式错乱

页面直接使用ElementUI,官方提供的表格代码,样式错乱

在使用element编写前端代码是,引入element的css和js,使用官方提供的例子:<template>   <el-table :data=&...

在写css时不起作用,请排查是否是scoped的问题

在写css的时候,用了框架自带的组件table和card,把table包在了card里面,然后发现table的分页样式出现了问题,查看源码后发现card中写了ul li { margin-left:2...

npm简介

npm简介

做前端开发,如果项目达到了一定的规模,就离不开npm了。下面简单介绍一下npm的知识。1、npm的含义npm,Node Package Manager的缩写,也就是“节点的包管理器”。顾名思义,npm...

vue3 拖拽插件 vue.draggable.next

官网地址:https://github.com/SortableJS/vue.draggable.next安装:npm i -S vuedraggable@next引入插...

使用vite打包vue项目生成dist文件夹,部署至nginx除了index.html,其他路径都提示404错误的解决

使用vite打包vue项目生成dist文件夹,部署至nginx除了index.html,其他路径都提示404错误的解决

用vue打包生成dist文件夹,然后在本地nginx部署vue项目时只能访问默认页面,刷新和跳转页面都会出问题。原因:只访问了dist文件下的 index.html、index.htm页面,...

vue3中给响应式数据赋值操作,以及toRef 和 toRefs区别

最近在开发vue3时,定义了一个变量:let form = reactive({});form = res.items;这里我将接口获取到的数据直接赋给了form,这样我在表单中:<el-for...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。