Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nuxt3 数据请求 useAsyncData/useFetch

Nuxt3 数据请求 useAsyncData/useFetch

原创
作者头像
KID.
修改于 2023-10-30 06:37:51
修改于 2023-10-30 06:37:51
4.3K0
举报

配置SSR

Nuxt3 默认首屏SSR,由服务端渲染,可以通过配置 ssr:false 来取消服务端渲染

nuxt.config.ts

代码语言:txt
AI代码解释
复制
export default defineNuxtConfig({
  devtools: { enabled: true },
 // ssr:false, //页面全部为客户端渲染
  routerRules:{ // 指定路由页面为客户端渲染
      '/home': {
          ssr:false
      }
  }
})

数据请求

根据vue 的声明周期,只有 setup beforeCreate Created**里的内容会在服务端执行,所以如果是首屏服务端渲染时,需要将获取数据方法写到这几个生命周期之中**

Nuxt3 有封装好的$fetch方法做数据请求,可以不需要引入第三方axios或者fetch做数据请求,可能会出现多个请求数据混乱问题


下列情况都是不需要跨域的请求,服务端和客户端不需要做其他配置代理就可以请求的内容

useAsyncData && useLazyAsyncData

useAsyncData 需要结合 $fetch 来使用,且要 传入一个唯一的key值,防止请求过多数据混乱,lazy默认为false ,会在从别的页面跳转进来时阻塞路由跳转 即:需要先请求完后路由才会切换

useLazyAsyncData 的lazy默认为true 不需要再额外写配置

代码语言:txt
AI代码解释
复制
<template>
  <div>
    <div v-for="item of list" :key="item.name">
      {{ item.name }}
    </div>
  </div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const list = ref([])
const { data } = await useAsyncData(
  'id', // 需要输入唯一ID
  () =>
    $fetch('https://xxx.xxx.com', {
      headers: {
        ...
      }
    }),
  {
    pick: ['data'], // 选择返回对象中想要的属性
    // lazy: false, // 这里默认为false 会阻塞路由渲染,(一定要等到数据请求回来后才会跳转路由)
    lazy: true // 不会阻塞路由跳转,但是会导致跳转后无数据,需要通过watch监听数据后赋值
  }
)
 // 不可以去掉,否则首屏加载会报错
list.value = data.value
watch(data, () => {
  list.value = data.value
})
</script>

这里获取数据最开始是空数组,请求数据后将内容赋值,使用lazy后会导致最开始数据没有,进入页面请求数据不加载,这里可以使用 watch监听返回内容,改变时赋值。

也可以不做赋值处理,直接将取出的内容解构 用于页面渲染,就可以不需要监听

代码语言:txt
AI代码解释
复制
<template>
  <div>
    <div v-for="item of data" :key="item.name">
      {{ item.name }}
    </div>
  </div>
</template>
<script setup lang="ts">

const { data } = await useAsyncData(
  'id', // 需要输入唯一ID
  () =>
    $fetch('https://xxx.xxx.com', {
      headers: {
        ...
      }
    }),
  {
    pick: ['data'], // 选择返回对象中想要的属性
    // lazy: false, // 这里默认为false 会阻塞路由渲染,(一定要等到数据请求回来后才会跳转路由)
    lazy: true // 不会阻塞路由跳转,但是会导致跳转后无数据,需要通过watch监听数据后赋值
  }
)

</script>

useFetch && useLaztFetch

相当于useAsyncData的 语法糖,不需要写$fetch也不需要传入唯一id

useLaztFetch 就是 默认将lazy设置为true ,

写法相对简单

代码语言:txt
AI代码解释
复制
const { data } = await useFetch(
  'https://xxx.xxx.com',
  {
    headers: {
     ...
    },
    transform: (res: any) => res.data.films, // 返回内容过多可以筛选 想要的返回内容
    // lazy: false, // 这里默认为false 会阻塞路由渲染,(一定要等到数据请求回来后才会跳转路由)
    lazy: true // 不会阻塞路由跳转,但是会导致跳转后无数据,需要通过watch监听数据后赋值
  }
)

</script>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入了解Nuxt3中的useFetch、useAsyncData、$fetch 之间的区别
useFetch是Nuxt 3中最常用的数据获取方法之一。它是useAsyncData和$fetch的组合。
予果
2024/11/29
7310
深入了解Nuxt3中的useFetch、useAsyncData、$fetch 之间的区别
KZ-API接口服务
挺早之前就想写个 api 接口服务,封装下自己收集的一些 api 接口,以便调用,正好最近在接触 SSR 框架,所以就使用 Nuxt3 来编写该项目。
愧怍
2022/12/27
2.6K0
KZ-API接口服务
Nuxt3 基于H3做后台接口
Nuxt3 自动扫描 ~/server/api,~/server/routes,~/server/middleware目录中的文件,进行注册对应的接口
KID.
2023/11/23
1.8K0
Nuxt3在使用Tailwindcss情况下,如何优雅实现深色模式切换?
随着前端更新,网站设计中,深色模式也成为了一种备受欢迎的设计趋势。可以帮助用户减少眼睛的负担,同时也更加适合在光线较暗的环境下使用。
Mintimate
2023/07/31
2.2K0
Nuxt3在使用Tailwindcss情况下,如何优雅实现深色模式切换?
初步学习Nuxt3
Nuxt3 用于制作ssr 网页 支持vue3 所有的语法,并且支持了TypeScript, vite+vue3+composition api + ts。SPA单页面应用不能进行SEO优化,SSR应用在服务端进行渲染,渲染完成后返回给客户端,每一个页面有独立的URL对SEO友好。
用户1197315
2022/06/27
1.3K0
nuxt3目录结构详解
在 Nuxt.js 3 中,一个应用程序的文件夹结构具有一定的规范性。以下是 Nuxt.js 3 的文件夹结构及其用途的详细解释:
小小孩子们
2024/02/03
3.3K0
Nuxt3正式发布!5个纬度全方位感受Nuxt3的魅力!
引子 大家好,我 HoMeTown,在Nuxt3公测版过去的一年里,RC版中进行了各种性能改进与功能新增,11月16日,Nuxt3终于迎来了第一个稳定版本3.0的正式发布!🎉 就我个人而言,过去一年尝鲜了各种功能后,我依旧认为Nuxt3是一个非常好用且优秀的框架,同时在公司项目中进行了推进,落地了一些小项目。 Nuxt3 我觉得是一个比较通用和庞大的框架,很难用一个词来解释它的“优越”,今天,我将从5个纬度整理总结它的新引力。 请各位耐心看完。 注意:本文的内容是我个人的理解,并且尽量依据官网进行分析,
HoMeTown
2023/01/10
3.9K0
Nuxt3正式发布!5个纬度全方位感受Nuxt3的魅力!
Nuxt.js实战:Vue.js的服务器端渲染框架
首先,确保你已经安装了Node.js和yarn或npm。然后,通过命令行创建一个新的Nuxt.js项目:
天涯学馆
2024/06/06
1.2K0
Nuxt3 实战 (一):初始化项目
Nuxt 是一个建立在 Vue.js 上的服务器端渲染框架。它抽象出了管理异步数据、中间件和路由所涉及的大部分复杂配置。它还有助于使用行业标准架构来构造 Vue.js 应用程序,以构建简单或企业级的 Vue.js 应用程序。
白雾茫茫丶
2024/05/22
8170
Nuxt3 实战 (一):初始化项目
Nuxt.js + koa2 入门
Nuxt是基于Vue的一个应用框架,采用服务端渲染(SSR),可以让用户的Vue单页面应用(SPA)也可以有利于SEO。 非常方便做vue ssr:省去了很多配置的过程 安装项目: 1. 由于使用的是vue3,vue2的很多命令不能用 npm install -g @vue/cli-init 2. 然后进行初始化项目 vue init nuxt-community/koa-template nuxt-learn 3. 进入项目文件,安装模块 cd nuxt-learn npm install 4. 启动项目 npm run dev 如果vue是vue3以上的版本,会出现初始化模板错误 必须调整三个插件的版本才能继续跑通 backpack-core 升级到最新版本 eslint3+ 和 eslint-loader 2+也需要升级. cnpm i backpack-core@latest eslint-loader@latest -D
不愿意做鱼的小鲸鱼
2022/09/24
2K0
Nuxt.js + koa2 入门
Nuxt框架服务端渲染
Nuxt.js是通用的VUE的一个SSR框架(服务器端渲染)。官方介绍是通过对客户端/服务端基础框架的抽象组织,Nuxt.js主要关注的应用的UI渲染。
杜金房
2023/02/28
4.2K0
Nuxt框架服务端渲染
Next.js/Nuxt.js/Nest.js/Fastify
安利下:《next.js静态页面渲染技术(静态生成和服务端渲染):BSR/SSG/SSG》
周陆军博客
2023/05/14
3.5K0
Nuxt.js详解(一)
pages/ --| book/ //同名文件夹 -----| _id.vue -----| index.vue --| book.vue //父组件
陶然同学
2023/02/24
5.6K0
Nuxt.js详解(一)
用 Nuxt.js 搭建一个服务端渲染(SSR)应用
客户端渲染模式下,服务端把渲染的静态文件给到客户端,客户端拿到服务端发送过来的文件自己跑一遍 JS,根据 JS运行结果,生成相应 DOM,然后渲染给用户。
用户4456933
2021/06/01
8K0
用 Nuxt.js 搭建一个服务端渲染(SSR)应用
Vue Nuxt.js 概述
1. Nuxt.js 概述 1.1 我们一起做过的SPA SPA(single page web application)单页 Web 应用,Web 不再是一张张页面,而是一个整体的应用,一个由路由系统、数据系统、页面(组件)系统等等,组成的应用程序。 我们之前学习的Vue就是SPA中的佼佼者。 SPA 应用广泛用于对SEO要求不高的场景中 1.2 什么是SEO SEO:搜索引擎优化(Search Engine Optimization), 通过各种技术(手段)来确保,我们的Web内容被搜索引擎
Maynor
2021/12/14
9.1K0
Vue Nuxt.js 概述
基于 Next.js 的 SSR/SSG 方案了解一下?
本文主要是讲讲如何使用 Next.js 框架实现服务端渲染,将有效提升网页的 SEO 和首屏渲染速度,说不定哪天就用上了,是吧!
小东同学
2022/07/29
5.9K0
基于 Next.js 的 SSR/SSG 方案了解一下?
【长文慎入】一文吃透React SSR服务端同构渲染
前段时间一直在研究 react ssr技术,然后写了一个完整的 ssr开发骨架。今天写文,主要是把我的研究成果的精华内容整理落地,另外通过再次梳理希望发现更多优化的地方,也希望可以让更多的人少踩一些坑,让更多的人理解和掌握这个技术。
ConardLi
2019/09/25
4.1K0
【长文慎入】一文吃透React SSR服务端同构渲染
Nuxt3 项目基础配置超详细 and 项目模板
Nuxt基础配置模板地址 https://github.com/Seven7v/Nuxt3-vue3-project
KID.
2023/10/26
2.4K0
Nuxt3 项目基础配置超详细 and 项目模板
肝了几个月nuxt项目,想把这些实用知识点分享给你(干货)
转载自:时樾同学 https://juejin.cn/post/6901467138599763975 干了几个月的nuxt项目,差点没把自己给干翻。在公司没开干nuxt项目之前,我也没接触过nuxt
winty
2021/01/05
2.1K0
nuxt
Nuxt.js 是一个基于 Vue.js 的开源框架,旨在简化开发现代 Web 应用的工作流程。无论是服务端渲染 (SSR)、静态网站生成 (SSG),还是单页应用 (SPA),Nuxt.js 都提供了一套强大而灵活的解决方案。
阿超
2025/04/16
2750
相关推荐
深入了解Nuxt3中的useFetch、useAsyncData、$fetch 之间的区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档