系统性学习vue-vue中的ajax
vue中的ajax
- 配置代理
- 常用发送Ajax请求方式
- 跨域
- 方式一
- 方式二
- vue-resource
- 插槽
- 默认插槽
- 具名插槽
- 作用域插槽
配置代理
常用发送Ajax请求方式
- xhr
new XMLHttpRequest()在真正开发中不常用,比较麻烦 - jQuery 封装了xhr
- axios 封装了xhr 与jQuery相比优势是:是Promise风格,支持请求拦截器和响应拦截器,体积小(大约为jQuery的1/4) (尤雨溪推荐使用)
- fetch 原生 也是Promise风格 在IE浏览器兼容性差
下面来实践一下整个数据链路
使用axios发送请求
下载包npm i axios
引入import axios from 'axios'
使用
sendMsg() {axios.get("http://localhost:5000/students").then((response) => {console.log("请求成功了", response.data);},(error) => {console.log("请求失败了", error.message);});
},
使用nodejs写服务器
// serverStudents.js
const express = require("express");
const app = express();
app.use((request, response, next) => {console.log("========================================");console.log("有人请求服务器serverStudents了");console.log("请求的资源是:", request.url);console.log("请求来自于:", request.get("Host"));next();
});app.get("/students", (request, response) => {const students = [{ id: "001", name: "tom", age: 18 },{ id: "001", name: "lisa", age: 18 },{ id: "001", name: "jerry", age: 18 },];response.send(students);
});app.listen(5000, (err) => {if (!err)console.log("服务器成功启动了,请求学生信息地址为:http://localhost:5000/students");
});
启动服务器node serverStudents.js
点击按钮发送请求,看控制台

跨域
请求数据时报错....CROS....'Access-Control-Allow-Origin'就是因为跨域了
跨域会导致数据返回时浏览器不会将数据进一步发送到页面上
导致跨域是因为违背了同源策略,
同源策略是规定了三个东西必须一致:协议名,主机名,端口号
当前页面地址是http://localhost:8080/ 服务器地址是http://localhost:5000/ 端口号不同
解决方法
- cors 由后端进行处理 在返回数据时会携带一些特殊的响应头,浏览器识别这些响应头后就会将数据直接给
- jsonp 借助script标签的src属性在引入外部资源时不收同源策略限制 (一般不用 只能解决get请求的跨域)
- 代理服务器 (中台)在前端后端中间的一个服务器,与前端同源,而服务器间数据通信不用ajax不需要同源
所以我们就用vue-cli来创建一个代理服务器 文档
有两种方式
方式一
// 在vue.config.js中配置
// 开启代理服务器
devServer: {proxy: "http://localhost:5000",
},
而请求中的地址也要改为代理服务器地址,但要带着请求信息axios.get("http://localhost:8080/students")

注意:
proxy配置中的地址是后台服务器的
请求地址的是代理服务器地址
public目录下的内容会被代理服务器纳为己用,而当我们的请求代理服务器可以自己回答时,就不会再将请求转发给后端(是不是挡板?)
这种方法有两个缺点:无法配置多个代理,会自动拦截请求
方式二
将没用的注释掉
// vue.config.jsdevServer: {proxy: {"/api": {//请求前缀 如果请求的前缀有api则会走此代理,没有则不走此代理target: "http://localhost:5000",// ws: true, //用于支持websocket 默认true// changeOrigin: true, //是否改变请求来源地址为后台同源地址 控制请求头中的Host值 默认true},// "/foo": {// target: "<other_url>",// },},},
请求地址前缀是紧跟端口号,如:http://localhost:8080/api/students

报错了 为啥呢 看服务器输出
请求是成功的 但是请求资源是/api/students前缀竟然还带着

需要加个配置,将转发的请求按规则重写
pathRewrite: { "^/api": "" },

vue-resource
也是一个发送ajax请求的库
是一个对xhr的封装
是一个插件
目前不常使用了,因为不咋维护了
引入
//main.js
// 引入插件
import vueResource from 'vue-resource'
//使用插件
Vue.use(vueResource)
引入之后vm和vc都多了一个$http属性
使用
this.$http.get(...) //和axios的api相同
插槽
让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于父组件===>子组件
默认插槽
// 子组件 Category.vue
<template><div><h1>{{ cateName }}</h1><!-- 定义一个插槽 --><slot>默认值,当使用者没有传递具体结构时,就会展示</slot></div>
</template>
// 父组件 App.vue
<Category :cateName="'美食'">
<imgsrc="https://img-home.csdnimg.cn/images/20201124032511.png"referrerpolicy="no-referrer"alt=""
/>
</Category>
<Category></Category>

注意!: 插槽内容的样式可以写在子组件里,也可以写在使用者上
具名插槽
就是定义插槽时添加name属性
使用插槽时添加slot属性
<slot name="center">默认值,当使用者没有传递具体结构时,就会展示</slot>
<Category><imgslot="center"src="https://img-home.csdnimg.cn/images/20201124032511.png"referrerpolicy="no-referrer"alt=""/>
</Category>
//或者
// v-slot只能用于template标签上
<Category><template v-slot:center>//....</template>
</Category>
作用域插槽
通过插槽传递数据给插槽使用者
// 将数据传入
<slot name="center" :listData="list">默认值,当使用者没有传递具体结构时,就会展示</slot>
注意: 必须使用template标签
<Category><template scop="listData" slot="center">//....</template>
</Category>
相关文章:
系统性学习vue-vue中的ajax
vue中的ajax 配置代理常用发送Ajax请求方式跨域方式一方式二 vue-resource插槽默认插槽具名插槽作用域插槽 配置代理 常用发送Ajax请求方式 xhr new XMLHttpRequest() 在真正开发中不常用,比较麻烦jQuery 封装了xhraxios 封装了xhr 与jQuery相比优势是:…...
【PGSQL】date_trunc 函数
date_trunc 函数用于在 PostgreSQL 中将日期或时间戳值截断(向下取整)到指定的精度级别。当您想要忽略较小的时间单位(例如,小时、分钟、秒),专注于较大的单位(例如,天、月、年&…...
使用composer生成的DMG和PKG格式软件包有何区别
在使用Composer从包源构建软件包时候,有两种不同类型的包:PKG和DMG。你知道两者之间的区别吗? 以及如何选取吗? 每种格式都有各自的优势具体取决于软件包的预期用途以及用于部署软件包的工具。下面我们来了解一下PKG和DMG格式的区别和用途。…...
Linux 压缩解压
.tar (注:tar是打包,不是压缩!) 解包:tar xvf FileName.tar -C DirName打包:tar cvf FileName.tar DirName .gz 解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压…...
YUM仓库和NFS共享
目录 一、yum仓库 1. yum仓库介绍 1.1 简介 1.2 实现过程 1.3 实现安装服务 2. yum配置文件及命令 2.1 yum配置文件 2.1.1 yum主配置文件 2.1.2 仓库设置文件 2.1.3 日志文件 2.2 yum命令详解 2.2.1 查询 2.2.2 yum安装升级 2.2.3 软件卸载 3. 搭建仓库的方式 …...
Springboot中时间格式化
时间格式化方式 JsonFromat方式全局配置方式格式化工具方式 JsonFromat方式 前端传参或后端响应 yyyy-MM-dd HH:mm:ss 格式,直接属性字段上加注解 JsonFromat JsonFromat(pattern "yyyy-MM-dd HH:mm:ss", timezone "GMT8") private Date fi…...
蓝桥杯基础知识3 memset()
蓝桥杯基础知识3 memset() #include <bits/stdc.h> using namespace std;int main(){int a[5]; //随机数for(int i 0;i < 5; i)cout << a[i] << \n;cout << \n;memset(a, 0, sizeof a); //0for(int i 0;i < 5; i)cout << a[i] << …...
CentOS安装k8s单机/集群及一些命令
目录 前言 1. 安装docker 2. 安装要求 3.准备网络(如果只装单机版可跳过此部) 4. 准备工作 5. 安装 5.1. 配置阿里云yum k8s源 5.2 安装kubeadm、kubectl和kubelet 5.3 初始化,只在master执行,子节点不要执行 5.3.1 一些…...
iOS和安卓端个人踩坑史
本公司不提供测试机,借手机是开发测试中最麻烦的事 iOS可行组 1、iOS可以播放视频无声音,Andorid有声音 当时做了个远程视频连接项目,使用了jitsi第三方视频服务,iOS没有加dom.play()导致无法接收声音 2、iOS可以长按保存图片…...
前端面试Vue部分补充(详细)
1、vue的基本原理 Vue的基本原理是基于MVVM(Model-View-ViewModel)模式的前端框架。它通过数据绑定和响应式系统来实现数据和视图的自动同步更新。 Vue的基本原理可以概括为以下几个步骤: 1). 解析模板:Vue通过解析模板来生成虚…...
计算机网络重点简答题
文章目录(持续更新) 计算机网络重点简答题📣一、什么是TCP/IP的五层参考模型?✨1.是什么✨2.主要功能✨3.数据包的封装和解封装 📣二、TCP与UDP的区别? 计算机网络重点简答题 📣一、什么是TCP/…...
【迅搜17】SCWS分词(二)自定义字典及分词器
SCWS分词(二)自定义字典及分词器 经过上篇文章的学习,相信大家对分词的概念已经有了更深入的了解了吧。我们也知道了,SCWS 是 XS 中的一个重要组成部分,但它也是可以单独拿出来使用的。而对于分词器来说,不…...
深度学习记录--偏差/方差(bias/variance)
误差问题 拟合神经网络函数过程中会出现两种误差:偏差(bias)和方差(variance) 偏差和误差的区别 欠拟合(underfitting) 当偏差(bias)过大时,如左图,拟合图像存在部分不符合值,称为欠拟合(underfitting) 过拟合(overfitting) …...
React16源码: React中的renderRoot的源码实现
renderRoot 1 )概述 renderRoot 是一个非常复杂的方法这个方法里处理很多各种各样的逻辑, 它主要的工作内容是什么?A. 它调用 workLoop 进行循环单元更新 遍历整个 Fiber Tree,把每一个组件或者 dom 节点对应的Fiber 节点拿出来单一的进行更…...
GitHub项目推荐-incubator
项目地址 Github地址:GitHub - apache/incubator-anser 官网:Apache Answer | Free Open-source Q&A Platform 项目简述 这是Apache的一个开源在线论坛,也可以部署成为一个自有的QA知识库。项目主要使用了Go和Typescript来开发&#…...
如何使用ActiveMQ
ActiveMQ是Apache的一款开源消息总线,主要用来做消息的分发。使用ActiveMQ,通常需要以下步骤: 一、启动ActiveMQ 首先需要下载ActiveMQ,然后进行启动。启动后,可以在控制台创建队列,初始用户名和密码通常…...
《Python 3 基础》- numpy的array,python的list、tuple的区别与联系再辨析
这里写自定义目录标题 一、基本认识二、list与传统数组(以C为例)的联系与区别三、1维list切片规则四、2维list类似于2维数组,但表达方式需适应五、list与元组的联系与区别1. tuple的创建方法类似于list,tuple用(&#…...
写点东西《最佳 Web 框架不存在 》
写点东西《🥇最佳 Web 框架不存在 🚫》 TLDR;您选择的 Web 应用程序框架并不重要。嗯,它很重要,但并不像其他人希望您相信的那样重要。 2024 年存在如此多的库和框架,而且最好的库和框架仍然备受争议&…...
游戏开发丨基于PyGlet的简易版Minecraft我的世界游戏
文章目录 写在前面我的世界PyGlet简介实验内容游戏按键程序设计引入文件 运行结果写在后面 写在前面 本期内容:基于PyGlet的简易版Minecraft我的世界游戏 实验环境: pycharmpyglet 项目下载地址:https://download.csdn.net/download/m0_6…...
在线的货币兑换平台源码下载
在线的货币兑换平台,可帮助全球各地的个人和企业将货币从一种货币兑换为另一种货币。该货币兑换平台是 Codecanyon 中最先进的脚本。 源码下载:https://download.csdn.net/download/m0_66047725/88728084...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
