(三十七)vue 项目中常用的2个Ajax库

news2024/11/13 9:37:31

文章目录

  • axios实现
  • vue-resource实现

上一篇:(三十六)Vue解决Ajax跨域问题

先看一个github搜索案例
有一个搜索框,输入相关用户名,就能模糊搜索出用户,展现到下方
请添加图片描述

在这里插入图片描述
第一步:我们用到了第三方样式库bootstrap,首先需要在public文件夹见一个css文件夹,放入样式库,然后在index.html页面进行引入
请添加图片描述

    <!-- 引入第三方样式 -->
    <link rel="stylesheet" href="<%=BASE_URL%>css/bootstrap.css">

第二步:拆分组件,搜索跟文本框为一个组件Search,展示用户为一个组件List

axios实现

通用的 Ajax 请求库, 官方推荐,使用比较广泛
axios安装命令:npm i axios
App组件

<template>
  <div class="container">
    <Search/>
    <List/>
  </div>
</template>
<script>
import Search from "@/components/Search";
import List from "@/components/List";
export default {
  name: "App",
  components: {List, Search},
}
</script>
<style>
</style>

Seach组件

<template>
  <section class="jumbotron">
    <h3 class="jumbotron-heading">Search Github Users</h3>
    <div>
      <input type="text" placeholder="enter the name you search" v-model="keyWord"/>&nbsp;
      <button @click="searchUsers">Search</button>
    </div>
  </section>
</template>

<script>

import axios from "axios";

export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "Search",
  data(){
    return{
      keyWord:''
    }
  },
  methods:{
    searchUsers(){
      if (this.keyWord === ""){
        alert("输入不能为空")
        return
      }
      //请求前更新List的数据
      this.$bus.$emit('updateListData',{isFirst:false,isLoading:true,errMsg:'',users:[]})
      axios.get(`https://api.github.com/search/users?q=${this.keyWord}`).then(
          response => {
            //请求成功后更新List的数据
            this.$bus.$emit('updateListData',{isLoading:false,errMsg:'',users:response.data.items})
          },
          error => {
            console.log('请求失败',error.message)
            //请求后更新List的数据
            this.$bus.$emit('updateListData',{isLoading:false,errMsg:error.message,users:[]})
          }
      )
    }
  }
}
</script>
<style scoped>
</style>

List组件

<template>
  <div class="row">
  <!--展示用户列表-->
    <div v-show="info.users.length" class="card" v-for="user in info.users" :key="user.login">
      <a :href="user.html_url" target="_blank">
        <img :src="user.avatar_url" style='width: 100px'/>
      </a>
      <p class="card-text">{{user.login}}</p>
    </div>
    <!--展示欢迎词-->
    <h2 v-show="info.isFirst">欢迎使用</h2>
    <!--展示加载中-->
    <h2 v-show="info.isLoading">加载中....</h2>
    <!--展示错误信息-->
    <h2 v-show="info.errMsg">{{info.errMsg}}</h2>
  </div>
</template>

<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "List",
  data(){
    return{
      info: {
        isFirst:true,
        isLoading:false,
        errMsg:'',
        users:[]
      }
    }
  },
  mounted() {
    this.$bus.$on('updateListData',(dataObj)=>{
      this.info = {...this.info,...dataObj}
    })
  }
}
</script>

<style scoped>
.album {
  min-height: 50rem; /* Can be removed; just added for demo purposes */
  padding-top: 3rem;
  padding-bottom: 3rem;
  background-color: #f7f7f7;
}

.card {
  float: left;
  width: 33.333%;
  padding: .75rem;
  margin-bottom: 2rem;
  border: 1px solid #efefef;
  text-align: center;
}

.card > img {
  margin-bottom: .75rem;
  border-radius: 100px;
}

.card-text {
  font-size: 85%;
}
</style>

vue-resource实现

vue-resource:是一个插件库,对ajax进行了封装,用法与axios差不多。
vue-resource安装命令:npm i vue-resource
使用这个插件之后Vue和VueComponent身上就多了个$http,通过$http.get$http.post进行Ajax请求
vue 插件库, vue1.x 使用广泛,官方已不维护
安装完之后,需要在mian.js进行引入

import vueResource from "vue-resource";
Vue.use(vueResource)

请添加图片描述
Seach组件改为:

<template>
  <section class="jumbotron">
    <h3 class="jumbotron-heading">Search Github Users</h3>
    <div>
      <input type="text" placeholder="enter the name you search" v-model="keyWord"/>&nbsp;
      <button @click="searchUsers">Search</button>
    </div>
  </section>
</template>

<script>

import axios from "axios";

export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "Search",
  data(){
    return{
      keyWord:''
    }
  },
  methods:{
    searchUsers(){
      if (this.keyWord === ""){
        alert("输入不能为空")
        return
      }
      //请求前更新List的数据
      this.$bus.$emit('updateListData',{isFirst:false,isLoading:true,errMsg:'',users:[]})
      this.$http.get(`https://api.github.com/search/users?q=${this.keyWord}`).then(
          response => {
            //请求成功后更新List的数据
            this.$bus.$emit('updateListData',{isLoading:false,errMsg:'',users:response.data.items})
          },
          error => {
            console.log('请求失败',error.message)
            //请求后更新List的数据
            this.$bus.$emit('updateListData',{isLoading:false,errMsg:error.message,users:[]})
          }
      )
    }
  }
}
</script>

<style scoped>

</style>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

36、基于51单片机频率计 LCD 1602显示系统设计

摘要 数字频率计是一种基本的测量仪器。它被广泛应用于航天、电子、测控等领域&#xff0c;还被应用在计算机及各种数学仪表中。一般采用的是十进制数字&#xff0c;显示被测信号频率。基本功能是测量正弦信号&#xff0c;方波信号以及其他各种单位时间内变坏的物理量。由于其…

【沐风老师】为你推荐18个免费3dMAX插件和脚本

在所有 3D 软件中&#xff0c;3dMax的历史特别引人注目&#xff0c;有许多有趣的里程碑和突破点。自 1990 年推出以来&#xff0c;3dMax 一直是Autodesk公司的支柱产品之一。作为行业标准&#xff0c;它是高端项目和各种高级用途的首选 3D 软件之一。 如果你已经在使用3dMax&a…

一站式元数据治理平台——Datahub入门宝典

随着数字化转型的工作推进&#xff0c;数据治理的工作已经被越来越多的公司提上了日程。作为新一代的元数据管理平台&#xff0c;Datahub在近一年的时间里发展迅猛&#xff0c;大有取代老牌元数据管理工具Atlas之势。国内Datahub的资料非常少&#xff0c;大部分公司想使用Datah…

大数据开发-数据仓库介绍

目录标题1、数据仓库1.1 数仓为何而来&#xff1f;1.2 数据仓库的主要特性1.3 数据仓库与数据库的区别1.4 数据仓库三层架构1.5 实战-美团酒旅数仓建设1.6 ETL、ELT1.6.1 ETL1.6.2 ELT1、数据仓库 数据仓库Data Warehouse 简称DH&#xff0c;数据仓库的目的是构建面向分析的集…

Centos7.9源码编译安装dpdk

近日遇到一个需求&#xff0c;需要在Centos7.9上源码编译安装dpdk-21.11.2&#xff0c;并且dpdk的安装目录为/opt/。安装过程较为复杂&#xff0c;特此记录一下&#xff0c;方便日后查看。 相关配置参数编译环境虚拟机Centos7.9内核版本3.10.0-957dpdk版本21.11.2DPDK是INTEL公…

Java并发编程面试题——JUC专题

文章目录一、AQS高频问题1.1 AQS是什么&#xff1f;1.2 唤醒线程时&#xff0c;AQS为什么从后往前遍历&#xff1f;1.3 AQS为什么用双向链表&#xff0c;&#xff08;为啥不用单向链表&#xff09;&#xff1f;1.4 AQS为什么要有一个虚拟的head节点1.5 ReentrantLock的底层实现…

组合实现多类别分割(含实战代码)

来源&#xff1a;投稿 作者&#xff1a;AI浩 编辑&#xff1a;学姐 摘要 segmentation_models_pytorch是一款非常优秀的图像分割库&#xff0c;albumentations是一款非常优秀的图像增强库&#xff0c;这篇文章将这两款优秀结合起来实现多类别的图像分割算法。数据集选用CamVid…

Java实现JDBC工具类DbUtils的抽取及程序实现数据库的增删改操作

封装DbUtils 工具类 不知道我们发现没有&#xff0c;不管是对数据库进行查询&#xff0c;还是标准的JDBC 步骤&#xff0c;其开端都是先实现JDBC 的加载注册&#xff0c;接着是获取数据库的连接&#xff0c;最后都是实现关闭连接&#xff0c;释放资源的操作。那我们何不直接把…

起薪2万的爬虫工程师,Python需要学到什么程度才可以就业?

爬虫工程师的的薪资为20K起&#xff0c;当然&#xff0c;因为大数据&#xff0c;薪资也将一路上扬。那么&#xff0c;Python需要学到什么程度呢?今天我们来看看3位前辈的回答。 1、前段时间快要毕业&#xff0c;而我又不想找自己的老本行Java开发了&#xff0c;所以面了很多P…

【Python】用sympy判断函数的单调性和极值

文章目录单调性和奇异性连续性、极值、周期、不动点单调性和奇异性 sympy.calculus.singularities提供了4个关于单调性判定的函数&#xff0c;分别是 is_decreasing(expr, interval, symbolNone) is_increasing(expr, interval, symbolNone) is_strictly_decreasing(expr, in…

【期末复习】例题讲解Dijkstra算法

使用场景Dijkstra算法用于解决单源点最短路径问题&#xff0c;即给一个顶点作为源点&#xff0c;依次求它到图中其他n-1个顶点的最短距离。例题讲解Dijkstra算法将图中所有顶点分成两部分&#xff0c;第一部分是已知到源点最短距离的顶点Known(K)&#xff0c;第二部分是不知道到…

教你如何搭建人事OA-考勤管理系统,demo可分享

1、简介1.1、案例简介本文将介绍&#xff0c;如何搭建人事OA-考勤管理。1.2、应用场景可查看员工考勤的数据统计&#xff0c;可进行考勤签到、补签、请假、加班、调休等流程。2、设置方法2.1、表单搭建1&#xff09;新建表单【考勤签到】&#xff0c;字段设置如下&#xff1a;名…

VS Code Spring 全新功能来了!

大家好&#xff0c;欢迎来到我们 2023 年的第一篇博客&#xff01;我们想与您分享几个与 Spring 插件、代码编辑和性能相关的激动人心的更新&#xff0c;让我们开始吧&#xff01; Spring 插件包的新入门演练 演练&#xff08;Walkthrough&#xff09; 是一种多步骤、向导式的体…

跨境进口税费计算

以前搞跨境进口的时候&#xff0c;需要计算商品税费。税费计算比较复杂&#xff0c;把信息整理了一下&#xff0c;分享给大家。 一、基础知识 1.1税费类型 BBC/BC&#xff1a;跨境电商进口综合税 关税*0 (消费税进口环节增值税)*70%CC&#xff1a;行邮税&#xff0c;税额低…

Vue3电商项目实战-商品详情模块1【01-商品详情-基础布局、02-商品详情-渲染面包屑、03-商品详情-图片预览组件、04-商品详情-图片放大镜】

文章目录01-商品详情-基础布局02-商品详情-渲染面包屑03-商品详情-图片预览组件04-商品详情-图片放大镜01-商品详情-基础布局 目的&#xff1a;完成商品详情基础布局&#xff0c;路由配置&#xff0c;搭好页面架子。 大致步骤&#xff1a; 准备组件结构容器提取商品推荐组件且…

十二月券商金工精选

✦研报目录✦ ✦简述✦ 按发布时间排序 华宝证券 主动暴露的得与失—从Barra框架到私募指增因子分析方法 发布日期&#xff1a;2022-12-01 关键词&#xff1a;股票、Barra、风险暴露、指数增强 主要内容&#xff1a;本文针对私募指数增强产品的策略流程&#xff0c;设计…

<JVM上篇:内存与垃圾回收篇>11 - 垃圾回收相关算法

对象存活判断 在堆里存放着几乎所有的 Java 对象实例&#xff0c;在 GC 执行垃圾回收之前&#xff0c;首先需要区分出内存中哪些是存活对象&#xff0c;哪些是已经死亡的对象。只有被标记为己经死亡的对象&#xff0c;GC 才会在执行垃圾回收时&#xff0c;释放掉其所占用的内存…

vue项目开发(vue2与vue3对比)

vue中使用typescrip 初与typescrip的约定情愫&#xff1a;最近项目要用到vue3,所以打算使用typescrip语法&#xff01; 安装&#xff1a; npx tyarn add typescript vue/cli-plugin-typescript -D npx tsc --init修改 tsconfig.json&#xff1a; {"compilerOptions&quo…

LVS中的keepalived高可用

文章目录前言一、Keepalived简介二、keepalived工作原理三、配置文件四、实验1.某台Real Server down2.LVS本身down实验过程&#xff1a;五、代码详细演示整体过程调度器安装软件、设置测试keepalived对后端RS的健康检测backup服务主机设置前言 一、Keepalived简介 Keepalived是…

ubuntu18.4安装Redmine软件

1.github网站下载Redmine4.2.0的安装包&#xff0c;如下图所示&#xff1a; https://github.com/redmine/redmine/releases/tag/4.2.0 图1 github网站下载redmine4.2.0安装包2.拷贝Redmine4.2.0的安装包到ubuntu工作目录&#xff0c;并解压缩&#xff0c;如下所示&#xff1a;…