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 @cli(axios)跨域访问 -> 正文阅读

[JavaScript知识库]VUe3 @cli(axios)跨域访问

CompC的代码:

<template>
	<div>
		<button @click="sendAjax">发送ajax请求</button>
		//如果user有值就展示,没值就不展示,因为初次进来user没有值
		<div v-if="user">
			<p>姓名:{{user.name}}</p>
			<p>介绍:{{user.bio}}</p>
			<p>头像:<img :src="user.avatar_url" alt="" style="width:100px;height:100px"></p>
		</div>
		<button @click="sendGet">参数传递</button>
	</div>
</template>

<script>
	//导入axios模块
	// import axios from 'axios'
	export default{
		data(){
			return{
				user:null
			}
		},
		methods:{
			// sendAjax(){
			// 	// let p = axios.get('https://gitee.com/api/v5/users/tangyang8942')
			// 	let p = this.$http.get('https://gitee.com/api/v5/users/tangyang8942')
			// 	//请求成功之后
			// 	.then(res =>{//相应对象
			// 		console.log(res.data)
			// 		this.user=res.data
			// 	})
			// 	//请求失败之后
			// 	.catch(err => {
			// 		console.log(err)
			// 	})
			// 	console.log(p)
			// }
			//服务器后台配置跨域访问
			//前台解决跨域访问
			sendGet(){
				this.$http.get('/api/toutiao/index',{
					params:{
						key:'b7cfd84383296b8284dc98ee70ac253e',
						type:'top'
					}
				}).then(res =>{
					console.log(res)
				}).catch(err =>{
					console.log(err)
				})
			}
		}
	}
</script>

<style lang="less">
</style>

vue.config.js

//导出内部的配置项
module.exports = {
	//这表示在测试服务器就是'http://localhost:8888/',打包之后就是'http://localhost:8888//shop/'
	publicPath:process.env.NODE_ENV==='production' ? '/shop/' : '/',
	//项目访问基础url
	// publicPath:'/',
	//开发服务器的配置
	devServer:{
		port:8888,
		//在前端构建代理服务器,进行请求的转发,实现跨域访问
		//编辑vue.config.js.添加代理服务器配置,开发阶段有效
		proxy:{
			'/api':{  //所有以/api开头的请求都被代理转发
				target:'http://v.juhe.cn',  //转发目标服务器
				changeOrigin:true,  //是否需要?
				ws:true,    //启动websocket代理
				secure:false, //如果是https请求,则需要配置
				pathRewrite:{ //重写服务器地址,去掉/api
					'^/api':''
				},
				//输出日志
				logLevel:'debug'  //开启调试模式
			}
		}
	}
}

有一个小bug:

?

?

跨域访问,一般都在服务器段进行配置,前段的配置只是在开发阶段可以,具体配置:

//开发服务器的配置
?? ?devServer:{
?? ??? ?port:8888,
?? ??? ?//在前端构建代理服务器,进行请求的转发,实现跨域访问
?? ??? ?//编辑vue.config.js.添加代理服务器配置,开发阶段有效
?? ??? ?proxy:{
?? ??? ??? ?'/api':{ ?//所有以/api开头的请求都被代理转发
?? ??? ??? ??? ?target:'http://v.juhe.cn', ?//转发目标服务器
?? ??? ??? ??? ?changeOrigin:true, ?//是否需要?
?? ??? ??? ??? ?ws:true, ? ?//启动websocket代理
?? ??? ??? ??? ?secure:false, //如果是https请求,则需要配置
?? ??? ??? ??? ?pathRewrite:{ //重写服务器地址,去掉/api
?? ??? ??? ??? ??? ?'^/api':''
?? ??? ??? ??? ?},
?? ??? ??? ??? ?//输出日志
?? ??? ??? ??? ?logLevel:'debug' ?//开启调试模式
?? ??? ??? ?}
?? ??? ?}
?? ?}?

Axios的具体的使用:

<template>
	<div>
		<!-- <button @click="sendAjax">发送ajax请求</button>
		//如果user有值就展示,没值就不展示,因为初次进来user没有值
		<div v-if="user">
			<p>姓名:{{user.name}}</p>
			<p>介绍:{{user.bio}}</p>
			<p>头像:<img :src="user.avatar_url" alt="" style="width:100px;height:100px"></p>
		</div> -->
		<button @click="sendGet">get方法</button>
		<button @click="sendPsot">post方法</button>
		<button @click="sendSimple">使用async和await简化axios的写法</button>
	</div>
</template>

<script>
	//导入axios模块
	// import axios from 'axios'
	//可以把传递的字符串变换为对象
	import qs from 'qs'
	export default{
		data(){
			return{
				user:null
			}
		},
		methods:{
			// sendAjax(){
			// 	// let p = axios.get('https://gitee.com/api/v5/users/tangyang8942')
			// 	let p = this.$http.get('https://gitee.com/api/v5/users/tangyang8942')
			// 	//请求成功之后
			// 	.then(res =>{//相应对象
			// 		console.log(res.data)
			// 		this.user=res.data
			// 	})
			// 	//请求失败之后
			// 	.catch(err => {
			// 		console.log(err)
			// 	})
			// 	console.log(p)
			// }
			//服务器后台配置跨域访问
			//前台解决跨域访问
			sendGet(){
				this.$http.get('/api/toutiao/index',{
					params:{
						key:'b7cfd84383296b8284dc98ee70ac253e',
						type:'top'
					}
				}).then(res =>{
					console.log(res)
				}).catch(err =>{
					console.log(err)
				})
			},
			sendPsot(){
				this.$http.post('/api/toutiao/index',qs.stringify({
					key:'b7cfd84383296b8284dc98ee70ac253e',
					type:'top'
				})).then(res=>{
					console.log(res)
				}).catch(err =>{
					console.log(err)
				})
			},
			//直接拿到对应的结果,异步的写法转换为同步的写法
			async sendSimple(){
				const {data}=await this.$http.post('/api/toutiao/index',qs.stringify({
					key:'b7cfd84383296b8284dc98ee70ac253e',
					type:'top'
				}))
				console.log(data)
			}
				
		}
	}
</script>

<style lang="less">
</style>

?

?

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:34:41  更:2021-08-23 16:35:22 
 
开发: 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 12:50:59-

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