Nuxt.js 服务端渲染 axios(@nuxtjs/axios) 和 proxy 代理的配置

简介: Nuxt.js 服务端渲染 axios(@nuxtjs/axios) 和 proxy 代理的配置

一、介绍

  • Nuxt.js(Vue SSR)创建项目到服务器(Nginx+PM2)部署详细流程
  • nuxt.js 在创建项目的时候可以选择安装 axios
  • axios@nuxtjs/axios 可以共用 nuxt.config.js 中代理配置。
  • 使用的时候需要注意 asyncData() 中需要请求全链接或者服务器有配代理的接口,也就是在服务器渲染的时候需要拿到组装的数据,等到了浏览器本地之后,需要走代理请求,否则会出现跨域,支持加载更多跟其他接口请求操作,更换数据也是没问题的,但是到浏览器之后必须走代理请求,在服务器渲染的时候必须走全链接请求或者走服务器配置了代理的请求,没配置代理就走全链接请求,在服务器不存在跨域,下面 axios 使用中有例子。

二、使用 @nuxtjs/axios

  • 在创建项目的时候,就可以选择导入 @nuxtjs/axios,它是对 axios 包装,更好在 nuxt.js 中使用,可以通过 this.$axios.get(url).then() 进行全局使用。
  • 检查 package.json 文件中 dependencies 有没有存在 @nuxtjs/axios,没有命令行安装(建议创建项目的时候就通过脚手架安装上)
$ npm install --save @nuxtjs/axios
  • nuxt.config.js 配置,代理配置
export default {
  head: { ... },
  css: [],
  modules: [
    '@nuxtjs/axios',
  ],
  axios: {
    // 开启代理 (如果需要判断线上线下环境,可以通过 process.env.NODE_ENV !== 'production' 来判断)
    proxy: true,
    // 给请求 url 加个前缀 /api,如果这项不配置,则需要手动添加到请求链接前面
    // 如果是多个代理的时候,则不需要配置,走手动添加代理前缀
    prefix: '/api',
    // 跨域请求时是否需要使用凭证
    credentials: true
  },
  proxy: {
    '/api': {
      // 目标接口域
      target: 'http://test.dzm.com',
      // 全局配置是否跨域
      changeOrigin: true,
      pathRewrite: {
        // 单个配置是否跨域
        // changeOrigin: true
        // 把 '/api' 替换成 '/',具体需要替换为 '' 还是 '/' 看自己习惯
        '^/api': '/'
      }
    }
  },
  build: {
    // 防止重复打包
    vendor: ['axios']
  }
}
  • 在组件中使用,这样就可以在服务器渲染到页面之后,通过请求进行更换数据,因为到页面之后需要走代理的方式才能获取到数据,否则会报错跨域。
mounted() {
    this.$axios.get("/index").then(res=>{
        console.log(res)
    })
    // axios 需要手动加上 '/api' 代理协议
    // @nuxtjs/axios 因为配置了 prefix: '/api' 会自动添加,否则也得手动添加
    // 访问的 url 地址为  http://x.x.x.x:3000/api/index
    // 然后根据上面代理转为 http://test.dzm.com/index
    // /api 会自动加到访问链接中
}

二、使用 axios

  • 安装命令,默认一般 nuxt.js 自带 axios,是不需要手动安装的,在 package.json 文件中 dependencies 中可能并不体现出来,可以通过 node_modules 文件夹找到 axios
$ npm install --save axios
  • 如果找到了,就不要去安装了,直接使用即可,代理是公用的。
<script>
import axios from 'axios'
export default {
    mounted() {
        axios.get("/api/index").then(res=>{
            console.log(res)
        })
        // axios 需要手动加上 '/api' 代理协议
        // @nuxtjs/axios 因为配置了 prefix: '/api' 会自动添加,否则也得手动添加
        // 访问的 url 地址为  http://x.x.x.x:3000/api/index
        // 然后根据上面代理转为 http://test.dzm.com/index
        // /api 会自动加到访问链接中
    }
}
</script>
  • axios可以进行封装使用,跟vue中一样
  • axios.js
import axios from 'axios'
const service = axios.create({
  // 请求地址,为空则请求的时候带上
  baseURL: '',
  // 请求超时时间
  timeout: 90000
})
export {
  service as axios
}
  • request.js
import { axios } from './axios'
// 请求地址
const BASE_URL = process.env.NODE_ENV === 'production' ? 'http://dzm.com' : 'http://test.dzm.com'
// 这种带全链接用于放在 asyncData() 中进行 SEO 请求
export function getxxx (parameter) {
  return axios({
    url: BASE_URL + `/list`,
    method: 'get',
    params: parameter
  })
}
// 这种带全链接用于放在 asyncData() 中进行 SEO 请求
export function postxxx (parameter) {
  return axios({
    url: BASE_URL + `/reload`,
    method: 'post',
    data: parameter
  })
}
// 这种带全链接用于放在页面加载到浏览器之后,加载更多或者其他请求操作使用,不会出现跨域问题
export function getxxx (parameter) {
  return axios({
    url: '/api' + `/list`,
    method: 'get',
    params: parameter
  })
}
// 这种带全链接用于放在页面加载到浏览器之后,加载更多或者其他请求操作使用,不会出现跨域问题
export function postxxx (parameter) {
  return axios({
    url: '/api' + `/reload`,
    method: 'post',
    data: parameter
  })
}
相关文章
|
1月前
|
JavaScript
Nest.js 实战 (十一):配置热重载 HMR 给服务提提速
这篇文章介绍了Nest.js服务在应用程序引导过程中,TypeScript编译对效率的影响,以及如何通过使用webpackHMR来降低应用实例化的时间。文章包含具体教程,指导读者如何在项目中安装依赖包,并在根目录下新增webpack配置文件webpack-hmr.config.js来调整HMR相关的配置。最后,文章总结了如何通过自定义webpack配置来更好地控制HMR行为。
|
9天前
|
JavaScript
Vue3基础(19)___vite.config.js中配置路径别名
本文介绍了如何在Vue 3的Vite配置文件`vite.config.js`中设置路径别名,以及如何在页面中使用这些别名导入模块。
13 0
Vue3基础(19)___vite.config.js中配置路径别名
|
2月前
|
移动开发 JavaScript 前端开发
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
这篇文章介绍了在UniApp H5项目中处理跨域问题的两种方法:通过修改manifest.json文件配置h5设置,或在项目根目录创建vue.config.js文件进行代理配置,并提供了具体的配置代码示例。
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
|
2月前
|
JSON 前端开发 JavaScript
vue.config.js配置详解
【8月更文挑战第16天】vue.config.js配置详解
30 1
vue.config.js配置详解
|
2月前
|
编解码 JavaScript 前端开发
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
58 1
|
2月前
|
JavaScript 前端开发 开发者
Vue.js 响应式变革来袭!结合热点技术,探索从 Object.defineProperty 到 Proxy 的奇妙之旅,触动你的心
【8月更文挑战第30天】在 Vue.js 中,响应式系统自动追踪并更新数据变化,极大提升了开发体验。早期通过 `Object.defineProperty` 实现,但存在对新旧属性处理及数组操作的局限。Vue 3.0 引入了 `Proxy`,克服了上述限制,提供了更强大的功能和更好的性能。实践中,可根据项目需求选择合适的技术方案,并优化数据操作,利用懒加载等方式提升性能。
32 0
|
2月前
|
JavaScript 前端开发 C++
【Vue.js的终极对决】服务端渲染VS客户端渲染:一场关乎速度与SEO的生死较量!
【8月更文挑战第30天】Vue.js 是一个流行的 JavaScript 框架,支持服务端渲染(SSR)和客户端渲染。SSR 在服务器生成完整 HTML,有利于 SEO 并缩短首屏加载时间,但增加服务器负担;客户端渲染则在浏览器生成页面,提升交互性,降低服务器负载。本文通过代码示例对比两者优劣,并提供选择指南,帮助开发者根据 SEO 需求、交互性需求及服务器资源等条件,选择合适的渲染方式,从而优化应用性能和用户体验。
40 0
|
2月前
|
JavaScript Windows
记一下 Windows11 安装与配置 node.js 的标准步骤
这篇文章记录了在Windows 11系统上安装和配置Node.js的步骤,包括安装Node.js、验证安装、配置npm、设置npm镜像加速、全局安装cnpm并配置镜像、解决TLS连接不安全警告的详细过程。
132 0
|
3月前
|
网络架构
若依修改 :id 不跳转注释的资料,路由配置:id不跳转修改,若依的store的permission.js对动态路由有控制
若依修改 :id 不跳转注释的资料,路由配置:id不跳转修改,若依的store的permission.js对动态路由有控制
若依修改 :id 不跳转注释的资料,路由配置:id不跳转修改,若依的store的permission.js对动态路由有控制
|
3月前
|
JavaScript IDE 持续交付
阿里云云效产品使用合集之如何配置 Node.js构建任务让其在Windows环境中进行
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
下一篇
无影云桌面