系统性学习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.js
  devServer: {
    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="'美食'">
<img
  src="https://img-home.csdnimg.cn/images/20201124032511.png"
  referrerpolicy="no-referrer"
  alt=""
/>
</Category>
<Category></Category>

在这里插入图片描述

注意!: 插槽内容的样式可以写在子组件里,也可以写在使用者上

具名插槽

就是定义插槽时添加name属性
使用插槽时添加slot属性

<slot name="center">默认值,当使用者没有传递具体结构时,就会展示</slot>
<Category>
	<img
	  slot="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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/327109.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# 导出EXCEL 和 导入

1.导出 使用winfrom简单做个界面 选择导出路径 XLSX起名字 打开导出是XLSX文件 代码部分 // 创建Excel应用程序对象Excel.Application excelApp new Excel.Application();excelApp.Visible false;// 创建工作簿Excel.Workbook workbook excelApp.Workbooks.Add(Type.Miss…

C++学习笔记——用C++实现树(区别于C)

树是一种非常重要的数据结构&#xff0c;它在计算机科学中的应用非常广泛。在本篇博客中&#xff0c;我们将介绍树的基本概念和C中如何实现树。 目录 一、树的基本概念 2.C中实现树 2.1创建一个树的实例&#xff0c;并向其添加节点 2.2三种遍历方式的实现代码 3.与C语言相…

(2024,强化学习,提示扩展,原始提示中心引导)Parrot:用于文本到图像生成的帕累托最优多奖励强化学习框架

Parrot: Pareto-optimal Multi-Reward Reinforcement Learning Framework for Text-to-Image Generation 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 基础 4. 方法 4…

MR-GCN

∘ Φ \circ_Φ ∘Φ​ denotes a convolution Let b l o c k d i a g blockdiag blockdiag(A) be a n1n3-by-n2n3 block diagonal matrix&#xff0c; f o l d fold fold indicate its inverse operator diagonal degree tensor D \mathcal{D} D 作者未提供代码

【漏洞复现】Sentinel Dashboard默认弱口令漏洞

Nx01 产品简介 Sentinel Dashboard是一个轻量级的开源控制台&#xff0c;提供机器发现以及健康情况管理、监控、规则管理和推送的功能。它还提供了详细的被保护资源的实际访问统计情况&#xff0c;以及为不同服务配置的限流规则。 Nx02 漏洞描述 Sentinel Dashboard存在默认弱…

AI智能剪辑,快速剪辑出需要的视频

AI智能剪辑技术&#xff0c;是一种基于人工智能的技术&#xff0c;它能够通过机器学习和深度学习算法&#xff0c;自动识别视频中的内容&#xff0c;并根据用户的需求和喜好&#xff0c;快速地剪辑出需要的视频。 所需工具 &#xff1a; 一个【媒体梦工厂】软件 视频素材 …

通过FTP和HTTPD,搭建内网yum仓库

一、yum仓库的简介 1.yum介绍 yum是一个基于RPM包&#xff08;是Red-Hat Package Manager红帽软件包管理器的缩写&#xff09;构建的软件更新机制&#xff0c;能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间 为什么会有依赖关系的发生 因为li…

ssm基于spring和vue开发的web新闻流媒体平台论文

摘 要 如今的时代&#xff0c;是有史以来最好的时代&#xff0c;随着计算机的发展到现在的移动终端的发展&#xff0c;国内目前信息技术已经在世界上遥遥领先&#xff0c;让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…

C#--核心

CSharp核心知识点学习 学习内容有&#xff1a; 绪论&#xff1a;面向对象的概念 Lesson1&#xff1a;类和对象 练习&#xff1a; Lesson2&#xff1a;封装--成员变量和访问修饰符 练习: Lesson3:封装--成员方法 Lesson4&#xff1a;封装--构造函数和析构函数 知识点四 垃圾回收…

程序员接私活还不知道这几个平台?那你真的亏了!

程序员接私活现在已经是一个老生常谈的话题了&#xff0c;现在市面上各种程序员接单平台层出不穷&#xff0c;也参差不齐&#xff0c;有比较老牌的知名平台&#xff0c;也有比较好的新兴平台&#xff0c;如此多的平台就容易让人眼花缭乱&#xff0c;不知道该如何选择。 这期文…

获取当前设备的IP

背景&#xff1a; 在本地使用自带webUI的项目时&#xff0c;需要制定webUI的访问地址。 一般本地访问使用&#xff1a;127.0.0.1&#xff0c;配置为可以从其他设备访问时&#xff0c;需要指定当前设备的IP&#xff0c;或者指定为0.0.0.0。 例如&#xff1a;使用locust的时候&a…

ElasticSearch降本增效常见的方法 | 京东云技术团队

Elasticsearch在db_ranking 的排名不断上升&#xff0c;其在存储领域已经蔚然成风且占有非常重要的地位。 随着Elasticsearch越来越受欢迎&#xff0c;企业花费在ES建设上的成本自然也不少。那如何减少ES的成本呢&#xff1f;今天我们就特地来聊聊ES降本增效的常见方法&#x…

x-cmd pkg | public-ip-cli - 公共 IP 地址查询工具

简介 public-ip-cli 是一个用 Javascript 编写的命令行工具&#xff0c;用于获取当前计算机或网络所使用的公共 IP 地址。 它可以让用户在命令行界面上查询 OpenDNS、Google DNS 和 HTTPS 服务的 DNS 记录以获取与互联网通信时所分配的公共 IP 地址。 首次用户 使用 x env us…

国科大-自然语言处理复习

自然语言处理复习 实体关系联合抽取流水线式端到端方法 检索式问答系统流水线方式信息检索&#xff08;IR&#xff09;阶段阅读理解&#xff08;RC&#xff09;阶段基于证据强度的重排基于证据覆盖的重排结合不同类型的聚合 端到端方式Retriever-Reader的联合学习基于预训练的R…

仿真机器人-深度学习CV和激光雷达感知(项目2)day01【项目介绍与环境搭建】

文章目录 前言项目介绍功能与技术简介硬件要求环境配置虚拟机运行项目demo 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;本文内容是我为复试准备的第二个项目 &#x1f4ab;欢迎大家的关注&#xff0c;我的博客主要关注…

图像处理:孤立点的检测

图像处理-孤立点的检测 孤立点的检测在图像处理中通常涉及到检测图像中的突变或者边缘&#xff0c;而使用二阶导数是一种常见的方法。一阶导数可以帮助找到图像中的边缘&#xff0c;而二阶导数则有助于检测边缘上的峰值&#xff0c;这些峰值可能对应于孤立点或者特殊的图像结构…

Zookeeper使用详解

介绍 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布…

谷粒商城-缓存使用分布式锁SpringCache(5天)

缓存使用 1.1.1 哪些数据适合放入缓存 即时性、 数据一致性要求不高的 访问量大且更新频率不高的数据&#xff08;读多&#xff0c; 写少&#xff09; 例如&#xff1a;电商类应用&#xff0c; 商品分类&#xff0c; 商品列表等适合缓存 本地缓存 使用Map进行本地缓存 本地缓存…

【Redis】AOF 源码

在上篇, 我们已经从使用 / 机制 / AOF 过程中涉及的辅助功能等方面简单了解了 Redis AOF。 这篇将从源码的形式, 进行深入的了解。 1 Redis 整个 AOF 主要功能 Redis 的 AOF 功能概括起来就 2 个功能 AOF 同步: 将客户端发送的变更命令, 保存到 AOF 文件中AOF 重写: 随着 Red…

MySQL数据库软件详解二

MySQL的配置文件 my.ini 概述&#xff1a;MySQL 的配置文件 参数名称说明port表示 MySQL 服务器的端口号basedir表示 MySQL 的安装路径datadir表示 MySQL 数据文件的存储位置&#xff0c;也是数据表的存放位置default-character-set表示服务器端默认的字符集default-storage…