IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue3.0中配置公共数据并完成axios网络请求工具的全局配置 -> 正文阅读

[JavaScript知识库]Vue3.0中配置公共数据并完成axios网络请求工具的全局配置

在vue3.0中,我们不能通过this在setup函数中来访问组件实例化对象,然而vue3.0就是提倡使用setup钩子来写数据。

vue2.0使用公共配置时一般绑定在原型上无论是否使用都在每一个组件的this链上,这样的设计不太友好,因此我们在vue3.0中为我们提供了专门公共数据配置的方式: globalProperties getCurrentInstance。

globalProperties和getCurrentInstance的使用:

在main.js文件中通过globalProperties配置公共数据:

import { createApp } from 'vue'

import App from './App.vue'

const app=createApp(App)//app为我们得到的Vue实例化对象

//使用globalProperties:

app.config.globalProperties.$***="公共数据"//这时这个公共属性就配置好了

app.mount('#app')//组件挂载到页面

?在其它组件中通过getCurrentInstance使用数据:

<script setup>

//首先导入getCurrentInstance这个API

? import { getCurrentInstance} from "vue";

? let obj=getCurrentInstance() //getCurrentInstance()获取当前组件实例对象

?let proxy=obj.proxy//当前组件的实例对象的proxy属性为一个对象其中存放的就是公共数据

//proxy.$***就可以取出公共数据

</script>

?注意:getCurrentInstance()只能在组合式API中使用才能得到当前组件的实例化对象。

以上就是公共数据的配置和使用。

axios网络请求工具的全局配置

1、首先在main.js文件中引入axios,这里需要我们npm i axios下载包到项目中。然后将axios方法添加为公共属性,在每个组件中就可以直接使用,不用再每个组件中再重复import导入axios;并同时配置AJAX请求时的公共网址

import { createApp } from 'vue'
import App from './App.vue'
import axios from "axios"//导入axios包
const app=createApp(App)

//配置公共网址
axios.defaults.baseURL="http://127.0.0.1:5173/api"
//添加为公共属性
app.config.globalProperties.$axios=axios

app.mount('#app')

?2、在组件中做网络请求时,通过getCurrentInstance()获得$axios这个方法

<script setup>
  import { getCurrentInstance,onMounted } from "vue";
  //解构赋值获得proxy对象,$axios就在其中
  let {proxy}=getCurrentInstance()
  //这时可以网络请求了,
   onMounted(async ()=>{
    let res = await proxy.$axios("/ajax")
    //这里实际请求的网址为:http://127.0.0.1:5173/api/ajax
    console.log(res);//得到后端ajax这个接口返回的数据
 })

3、需要做网络代理,我们通过egg框架启动的服务器端口号为7001,而利用vite启动的项目端口为5173,如果直接去请求7001下的数据会存在跨域问题。因此我们需要通过配置服务器代理,请求当前5173服务器,让我们的后端服务器去帮我们请求7001下的数据,服务器端请求数据不会造成跨域问题。

在vite.config.js文件中:

export default defineConfig({
?? ?plugins: [vue()],
?? ?server: {
?? ??? ?// port:"5173",//默认可以不写
?? ??? ?// host:"localhost"//默认可以不写
?? ??? ?proxy: {
?? ??? ??? ?'/api': {
?? ??? ??? ??? ?target: 'http://127.0.0.1:7001', // 代理的目标地址
?? ??? ??? ??? ?rewrite: (path) => path.replace(/^\/api/, '/'), // 路径重写
?? ??? ??? ??? ?changeOrigin: true,
?? ??? ??? ??? ?// secure: true, // target是否https接口
?? ??? ??? ??? ?// ws: true, // target是否代理websockets ? ? ? ? ? ? ??
?? ??? ??? ?}
?? ??? ?}
?? ?}
})

如果是在在webpack环境下的项目

在vue.config.js中:

module.exports={
?? ?lintOnSave:false,
?? ?devServer:{
? ? ? //? port:"**",//默认可以不写
? ? ? //? host:"localhost",//默认可以不写
?? ??? ?proxy:{
?? ??? ??? ?"/":{
?? ??? ??? ??? ?target:"http://127.0.0.1:7001",
?? ??? ??? ??? ?changeOrigin:true,
?? ??? ??? ??? ?pathRewrite:{"^/":""}
?? ??? ??? ?}
?? ??? ?}
?? ?}
}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:47:38  更:2022-09-24 20:51:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:46:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码