Nuxt.js整合axios

2023-05-16

整合 axios

默认整合
在构建项目时,如果选择axios组件,nuxt.js将自动与axios进行整合
在这里插入图片描述
手动整合
步骤1:package.json有axios的版本
在这里插入图片描述

 "dependencies": {
    "@nuxtjs/axios": "^5.13.1",
  },

步骤2:安装

npm install

步骤3:nuxt.config.js 以模块的方式添加axios
在这里插入图片描述

  modules: [
    // https://go.nuxtjs.dev/axios
    '@nuxtjs/axios',
  ],

常见配置
修改 nuxt.config.js 进行baseURL的配置
在这里插入图片描述

  // Axios module configuration: https://go.nuxtjs.dev/config-axios
  axios: {
    baseURL:'http://localhost:10010/'
  },

使用axios发送ajax
在vue页面中,通过 this.axios.xxx() 操作ajax。this.axios 与之前 axios等效。

this.$axios.post("/search-service/search",this.searchMap).then( res => {
    //获得查询结果
    this.searchResult = res.data.data;
});

使用asyncData发送 ajax
asyncData中的ajax将在“前端服务端执行”,在浏览器看到是数据,而不是ajax程序

发送一次请求
语法

export default {
	async asyncData( context ) {  //context就相当于其他地方的this
        //发送ajax
        let { data } = await context.$axios.get('路径','参数')
        // 返回结果
        return {变量: 查询结果从data获取 }
	},
}

实例

<template>
  <div>{{echo}}</div>
</template>

<script>
export default {
  async asyncData(context) {
    // 发送ajax
    let {data} = await context.$axios.get('/service-consumer/feign/echo/abc')
    // 返回数据
    return {
      echo: data
    }
  },
}
</script>

<style>

</style>

发送多次请求
语法1:

export default {
    async asyncData( content ) {
        let [结果1,结果2] = await Promise.all([ ajax请求1, ajax请求2])
        return {
            变量1: 结果1,
            变量2: 结果2
        }
    },
}

语法2:

export default {
    async asyncData( content ) {
        let [{数据:别名1},{数据:别名2}] = await Promise.all([ ajax请求1, ajax请求2])
        return {
            变量1: 别名1,
            变量2: 别名2
        }
    },
}

实例:

<template>
  <div>{{echo}} {{echo2}}</div>
</template>

<script>
export default {
  async asyncData(context) {
    // 发送ajax
    let [{data:echo}, {data:echo2}] = 
                await Promise.all([
                    context.$axios.get('/service-consumer/feign/echo/abc'),
                    context.$axios.get('/service-consumer/client/echo/abc')
                ])

    // 返回数据
    return {
      echo,
      echo2
    }
  },
}
</script>

<style>

</style>

使用fetch发送 ajax
fetch 方法用于在渲染页面前填充应用的状态树(store)数据, 与 asyncData 方法类似,不同的是它不会设置组件的数据
在这里插入图片描述
步骤1:创建store/index.js

export const state = () => ({
  str: 0
})

export const mutations = {
  setData (state, value) {
    state.str = value
  }
}

步骤2:测试页面

<template>
  <div>
    <!-- 显示数据 -->
    {{$store.state.str}}
  </div>
</template>

<script>

export default {
  async fetch( {store, $axios} ) {
    // 发送ajax
    let { data } = await $axios.get('/service-consumer/feign/echo/abc')
    // 设置数据
    store.commit('setData' , data )
  }
}
</script>

<style>

</style>

客户端
步骤一:在nuxt.conf.js中配置客户端插件,设置 mode 为 client

  plugins: [
    { src: '~plugins/api.js', mode: 'client' }
  ],

在这里插入图片描述
步骤二:编写 plugins/api.js 对 内置的 $axios进行增强
在这里插入图片描述

//自定义函数
const request = {
  test : (params) => {
    return axios.get('/service-consumer/feign/echo/abc',{
      params
    })
  },
}

var axios = null
export default ({ $axios }, inject) => {

  //3) 保存内置的axios
  axios = $axios

  //4) 将自定义函数交于nuxt
  // 使用方式1:在vue中,this.$request.xxx()
  // 使用方式2:在nuxt的asyncData中,content.app.$request.xxx()

  inject('request', request)
}

服务端
步骤一:配置服务端插件,设置 mode 为 server

  plugins: [
    { src: '~plugins/api.js', mode: 'client' },
    { src: '~plugins/api.server.js', mode: 'server' },
  ],

步骤二:编写 plugins/api.server.js 对 内置的 $axios进行增强

const request = {
  test : (params) => {
    return axios.get('/service-consumer/feign/echo/abc',{
      params
    })
  },
  
}

var axios = null
export default ({ $axios, redirect, process }, inject) => {

  //赋值
  axios = $axios

  //4) 将自定义函数交于nuxt
  // 使用方式1:在vue中,this.$requestServer.xxx()
  // 使用方式2:在nuxt的asyncData中,content.app.$requestServer.xxx()
  inject('requestServer', request)
}

插件配置总结

//方式1:通过src设置文件,通过mode设置模式
plugins: [
	{ src: '~/plugins/apiclient.js', mode: 'client' },		//前端客户端
	{ src: '~/plugins/apiserver.js', mode: 'server' },		//前端服务端
    { src: '~/plugins/api.js' }								//前端客户端 + 前端服务端
]

//方式2:通过命名来确定模式
plugins: [
    '~/plugins/api.client.js',				//前端客户端
    '~/plugins/api.server.js',				//前端服务端
    '~/plugins/api.js',						//前端客户端 + 前端服务端
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nuxt.js整合axios 的相关文章

随机推荐

  • 大数据可视化学习总结

    自大一下学期听说的大数据 xff0c 也是那个时候才了解大数据这个专业 xff0c 自己并不喜欢这个专业 xff0c 一方面是因为学历的原因 xff0c 一方面自己对这个确实没什么兴趣 xff0c 当时一心都扑在了Java方向 先说好的一方
  • Python1+X(中级)证书培训笔记(上)

    最近参加了一个Python1 43 X的证书培训 xff0c 然后以下是整理的学习笔记 xff0c 证书涵盖的知识点有三大块 分别是数据库操作 WEB开发 网络爬虫分析下面将详细分别讲解 阅读必看 本博客没有安装的讲解 xff0c 更多是如
  • 初识Python自动化运维(一)

    系统模块 系统模块主要是使用psutil库 xff0c 后面会主要写这个介绍一下 psutil 是一个跨平台库 xff0c 能够轻松实现获取系统运行的进程和系统利用率 xff08 包括cpu 磁盘 网络等信息 xff09 常用psutil监
  • 二叉树先中后序遍历(递归非递归)

    先序遍历 先序遍历也叫先根遍历 xff0c 采用先访问根节点 xff0c 再访问左节点 xff0c 最后访问右节点 递归实现 span class token comment Definition for a binary tree nod
  • 数据结构与算法二 ---链表

    前言 这一节是链表 xff0c 这是为了填坑 xff0c 自己说过的话 xff0c 一定要做到 什么是链表 相比上一章的数组 xff0c 链表是一种稍微麻烦亿丢丢的数据结构 如图 xff1a 数组需要一块连续的存储空间 xff0c 对内存要
  • 如何在Linux中的命令行中列出和启动VirtualBox VM?

    VirtualBox is a nice open source virtual machine software It works nicely on Linux and is supported by many Linux distro
  • 数据结构与算法---(最小栈)

    最小栈 题目需求 xff1a 实现一个这样的栈 xff0c 这个栈除了可以进行普通的push pop操作以外 xff0c 还可以进行getMin的操作 xff0c getMin方法被调用后 xff0c 会返回当前栈的最小值 栈里面存放的都是
  • JAVA集合三大类

    JAVA集合三大类 xff1a 1 set set集合无法记住添加的顺序 xff0c 因此set集合中的元素不能重复 2 list xff1a 与数组类似 xff0c list集合可以记住每次添加元素的顺序 xff0c 因此可以根据元素的索
  • 计算机网络词汇解释(二)——交互、 点到点、端到端

    计算机网络词汇解释 xff08 二 xff09 交互 点到点 端到端 本篇文章试图以 xff1a 是什么 xff1f 为什么 xff1f 怎么样 xff1f 三个层次来解释词汇 xff0c 并尽量实现通信的哲学 你传达的复杂信息 xff0c
  • java 字符串 提取 或 去除字母字符串

    提取 linStr span class token operator 61 span linStr span class token punctuation span span class token function replaceAl
  • 数字图像处理---自适应中值滤波实验(MATLAB实现含源码)

    自适应中值滤波实验 xff08 MATLAB实现 xff09 实验目的 1 掌握中值滤波以及自适应中值滤波器的原理以及滤波过程 2 掌握自适应中值滤波的算法设计 3 进一步熟悉MATLAB编程 实验原理 中值滤波的思想就是比较一定领域内的像
  • SpringBoot拦截器执行后,Controller层不执行

    问题描述 xff1a 请求在SpringBoot拦截器中执行后 xff0c 在Controller层不执行 xff0c 前端错误码400 原因分析 xff1a ServletRequest 中通过流获取参数 xff08 getInputSt
  • 一位工作了10年的C++程序员总结出这些忠告

    1 可以考虑先学习C 大多数时候 xff0c 我们学习语言的目的 xff0c 不是为了成为一个语言专家 xff0c 而是希望成为一个解决问题的专家 做一个有用的程序员 xff0c 做一个赚钱的程序员 我们的价值 xff0c 将体现在客户价值
  • 1.6配置通过ftp进行文件操作

    ftp是文件传输的internet标准 xff0c 主要功能是向用户提供本地和远程主机之间的文件传输 版本升级 日志下载 使用c s结构 实验内容 xff1a 模拟企业网络 xff0c pc1访问ftp server 做上传下载操作 出于安
  • 数据库原理及应用复习资料

    单选 xff08 无解析 xff09 xff08 A xff09 是对数据库中全部数据的逻辑结构和特征的描述 A 模式 B 外模式 C 内模式 D 视图 xff08 B xff09 是对数据库用户能够看见和使用的局部数据的逻辑结构和特征的描
  • ae 渲染选项_好的MPlayer选项,以提高视频渲染质量

    ae 渲染选项 MPlayer has lots options for video rendering and filtering Any suggestions on good MPlayer options that improve
  • Nuxt.js 概述 安装 目录结构说明

    什么是SEO SEO xff1a 搜索引擎优化 xff08 Search Engine Optimization xff09 通过各种技术 xff08 手段 xff09 来确保 xff0c 我们的Web内容被搜索引擎最大化收录 xff0c
  • Nuxt.js路由

    路由 路由概述 Nuxt js 依据 pages 目录结构自动生成 vue router 模块的路由配置 要在页面之间切换路由 xff0c 我们建议使用 nuxt link 标签 基础路由 自动生成基础路由规则 情况1 xff1a 访问路径
  • Nuxt.js 视图

    视图 默认模板 定制化默认的 html 模板 xff0c 只需要在应用根目录下创建一个 app html 的文件 默认模板 xff1a span class token doctype span class token punctuatio
  • Nuxt.js整合axios

    整合 axios 默认整合 在构建项目时 xff0c 如果选择axios组件 xff0c nuxt js将自动与axios进行整合 手动整合 步骤1 xff1a package json有axios的版本 34 dependencies 3