vue3 自动导入自己的js文件中的函数
import AutoImport from 'unplugin-auto-import/vite' export default defineConfig ( { resolve : { alias : { '@' : fileURLToPath ( new URL ( './src' , import . meta. url) ) } } , plugins : [ vue ( ) , AutoImport ( { imports : [ 'vue' , 'vue-router' , 'pinia' , { from : '@/utils/request.js' , imports : [ 'http' ] , } ] , } ) , ] } )
import axios from 'axios'
import qs from 'qs' import NProgress from 'nprogress'
import 'nprogress/nprogress.css' axios. defaults. headers = { 'Content-Type' : 'application/x-www-form-urlencoded' }
axios. defaults. baseURL = import . meta. env. VITE_APP_BASE_URL
const instance = axios. create ( { timeout : 60000
} )
instance. interceptors. request. use ( ( config ) => { if ( config. method === 'post' && config. headers[ 'Content-Type' ] === 'application/x-www-form-urlencoded' ) { config. data = qs. stringify ( config. data, { indices : false , skipNulls : true } ) } NProgress. start ( ) return config} , ( err ) => Promise. reject ( err)
)
instance. interceptors. response. use ( function ( response ) { NProgress. done ( ) return response} , function ( error ) { NProgress. done ( ) return Promise. reject ( error) }
) export const http = instanceexport default instance
这样在别的文件中就可以直接引用http,不需要import
< script setup> let allData = ref ( [ ] )
const getData = async ( ) => { http. post ( '/api/data' ) . then ( ( res ) => { allData. value = res. data} )
} getData ( )
< / script> < template> < div> test< / div> < div class = "chart" > < MyChart2 : data= "allData" > < / MyChart2> < / div>
< / template> < style scoped lang= "scss" >
. chart { width : 100 % ; height : 400px;
}
< / style>