当前位置: 首页 > news >正文

系统性学习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() 在真正开发中不常用&#xff0c;比较麻烦jQuery 封装了xhraxios 封装了xhr 与jQuery相比优势是&#xff1a…...

【PGSQL】date_trunc 函数

date_trunc 函数用于在 PostgreSQL 中将日期或时间戳值截断&#xff08;向下取整&#xff09;到指定的精度级别。当您想要忽略较小的时间单位&#xff08;例如&#xff0c;小时、分钟、秒&#xff09;&#xff0c;专注于较大的单位&#xff08;例如&#xff0c;天、月、年&…...

使用composer生成的DMG和PKG格式软件包有何区别

在使用Composer从包源构建软件包时候&#xff0c;有两种不同类型的包&#xff1a;PKG和DMG。你知道两者之间的区别吗? 以及如何选取吗&#xff1f; 每种格式都有各自的优势具体取决于软件包的预期用途以及用于部署软件包的工具。下面我们来了解一下PKG和DMG格式的区别和用途。…...

Linux 压缩解压

.tar &#xff08;注&#xff1a;tar是打包&#xff0c;不是压缩&#xff01;&#xff09; 解包&#xff1a;tar xvf FileName.tar -C DirName打包&#xff1a;tar cvf FileName.tar DirName .gz 解压1&#xff1a;gunzip FileName.gz解压2&#xff1a;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 格式&#xff0c;直接属性字段上加注解 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.准备网络&#xff08;如果只装单机版可跳过此部&#xff09; 4. 准备工作 5. 安装 5.1. 配置阿里云yum k8s源 5.2 安装kubeadm、kubectl和kubelet 5.3 初始化&#xff0c;只在master执行&#xff0c;子节点不要执行 5.3.1 一些…...

iOS和安卓端个人踩坑史

本公司不提供测试机&#xff0c;借手机是开发测试中最麻烦的事 iOS可行组 1、iOS可以播放视频无声音&#xff0c;Andorid有声音 当时做了个远程视频连接项目&#xff0c;使用了jitsi第三方视频服务&#xff0c;iOS没有加dom.play()导致无法接收声音 2、iOS可以长按保存图片…...

前端面试Vue部分补充(详细)

1、vue的基本原理 Vue的基本原理是基于MVVM&#xff08;Model-View-ViewModel&#xff09;模式的前端框架。它通过数据绑定和响应式系统来实现数据和视图的自动同步更新。 Vue的基本原理可以概括为以下几个步骤&#xff1a; 1). 解析模板&#xff1a;Vue通过解析模板来生成虚…...

计算机网络重点简答题

文章目录&#xff08;持续更新&#xff09; 计算机网络重点简答题&#x1f4e3;一、什么是TCP/IP的五层参考模型&#xff1f;✨1.是什么✨2.主要功能✨3.数据包的封装和解封装 &#x1f4e3;二、TCP与UDP的区别&#xff1f; 计算机网络重点简答题 &#x1f4e3;一、什么是TCP/…...

【迅搜17】SCWS分词(二)自定义字典及分词器

SCWS分词&#xff08;二&#xff09;自定义字典及分词器 经过上篇文章的学习&#xff0c;相信大家对分词的概念已经有了更深入的了解了吧。我们也知道了&#xff0c;SCWS 是 XS 中的一个重要组成部分&#xff0c;但它也是可以单独拿出来使用的。而对于分词器来说&#xff0c;不…...

深度学习记录--偏差/方差(bias/variance)

误差问题 拟合神经网络函数过程中会出现两种误差&#xff1a;偏差(bias)和方差(variance) 偏差和误差的区别 欠拟合(underfitting) 当偏差(bias)过大时&#xff0c;如左图&#xff0c;拟合图像存在部分不符合值&#xff0c;称为欠拟合(underfitting) 过拟合(overfitting) …...

React16源码: React中的renderRoot的源码实现

renderRoot 1 &#xff09;概述 renderRoot 是一个非常复杂的方法这个方法里处理很多各种各样的逻辑, 它主要的工作内容是什么&#xff1f;A. 它调用 workLoop 进行循环单元更新 遍历整个 Fiber Tree&#xff0c;把每一个组件或者 dom 节点对应的Fiber 节点拿出来单一的进行更…...

GitHub项目推荐-incubator

项目地址 Github地址&#xff1a;GitHub - apache/incubator-anser 官网&#xff1a;Apache Answer | Free Open-source Q&A Platform 项目简述 这是Apache的一个开源在线论坛&#xff0c;也可以部署成为一个自有的QA知识库。项目主要使用了Go和Typescript来开发&#…...

如何使用ActiveMQ

ActiveMQ是Apache的一款开源消息总线&#xff0c;主要用来做消息的分发。使用ActiveMQ&#xff0c;通常需要以下步骤&#xff1a; 一、启动ActiveMQ 首先需要下载ActiveMQ&#xff0c;然后进行启动。启动后&#xff0c;可以在控制台创建队列&#xff0c;初始用户名和密码通常…...

《Python 3 基础》- numpy的array,python的list、tuple的区别与联系再辨析

这里写自定义目录标题 一、基本认识二、list与传统数组&#xff08;以C为例&#xff09;的联系与区别三、1维list切片规则四、2维list类似于2维数组&#xff0c;但表达方式需适应五、list与元组的联系与区别1. tuple的创建方法类似于list&#xff0c;tuple用&#xff08;&#…...

写点东西《最佳 Web 框架不存在 》

写点东西《&#x1f947;最佳 Web 框架不存在 &#x1f6ab;》 TLDR&#xff1b;您选择的 Web 应用程序框架并不重要。嗯&#xff0c;它很重要&#xff0c;但并不像其他人希望您相信的那样重要。 2024 年存在如此多的库和框架&#xff0c;而且最好的库和框架仍然备受争议&…...

游戏开发丨基于PyGlet的简易版Minecraft我的世界游戏

文章目录 写在前面我的世界PyGlet简介实验内容游戏按键程序设计引入文件 运行结果写在后面 写在前面 本期内容&#xff1a;基于PyGlet的简易版Minecraft我的世界游戏 实验环境&#xff1a; pycharmpyglet 项目下载地址&#xff1a;https://download.csdn.net/download/m0_6…...

在线的货币兑换平台源码下载

在线的货币兑换平台&#xff0c;可帮助全球各地的个人和企业将货币从一种货币兑换为另一种货币。该货币兑换平台是 Codecanyon 中最先进的脚本。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88728084...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...