nuxt3中的useAsyncData渲染后要刷新数据,再发起的请求能不显示在network中吗?
<template> <span> <slot /> 页面访问量:{{ data }} </span> <button @click="refresh">刷新数据</button></template><script setup>const { data, pending, refresh, error } = await useAsyncData("mountains", () => $fetch("http://localhost:8088/hello"));</script>
所有的请求,不管是初始化还是后续更新数据都不显示在network中,只走服务端渲染
在 Nuxt.js 中,useAsyncData
钩子函数用于异步获取数据,并在组件被渲染时预先加载数据。由于它是异步获取的,因此在组件加载时会发出一个请求,并且该请求会在网络中显示。
要确保 useAsyncData
请求不显示在 network 中,你可以考虑以下方法:
nuxt/image
或其他 Nuxt.js 插件来优化图片加载,并使用 nuxt/fetch
插件来处理异步数据加载。对于你的代码示例,如果你希望在点击按钮后刷新数据而不显示在 network 中,你可以考虑使用状态管理的方法。你可以在 Vuex store 中定义一个 action 来获取数据,并在组件中调用该 action。例如:
<template> <span> <slot /> 页面访问量:{{ data }} </span> <button @click="refresh">刷新数据</button></template><script setup>import { useStore } from 'vuex';const store = useStore();const refreshData = () => { store.dispatch('refreshData');};</script>
在 Vuex store 中:
import { defineStore } from 'vuex';export default defineStore({ state: { data: null, // 初始数据状态 pending: false, // 请求是否正在进行中 error: null, // 错误信息 }, mutations: { setData(state, data) { state.data = data; }, setPending(state, isPending) { state.pending = isPending; }, setError(state, error) { state.error = error; }, }, actions: { async refreshData({ commit }) { commit('setPending', true); // 设置请求正在进行中 try { const response = await $fetch("http://localhost:8088/hello"); // 发起请求获取数据 commit('setData', response.data); // 将获取到的数据存储到状态中 commit('setPending', false); // 设置请求完成 } catch (error) { commit('setError', error); // 存储错误信息到状态中 commit('setPending', false); // 设置请求完成,并显示错误信息给用户看 } }, },});
通过以上方式,当点击按钮后触发 refreshData
action,数据请求将在服务端执行,而不会显示在 network 中。
服务端渲染一个很常见的场景是当用户(或搜索引擎爬虫)第一次请求页面时,用它来做初始渲染。当服务器接收到请求后,它把需要的组件渲染成 HTML 字符串,然后把它返回给客户端(这里统指浏览器)。之后,客户端会接手渲染控制权。 下面我们使用 React 来做示例,对于支持服务端渲染的其它 view 框架,做法也是类似的。 服务端使用 Redux 当在服务器使用 Redux 渲染时,一定要在响应中包含应用
准备动作 1、安装nodejs与安装express 安装nodejs教程:http://www.cnblogs.com/pigtail/archive/2013/01/08/2850486.html 安装 express 教程:https://www.wenjiangs.com/doc/f5jxm7ii 2、安装node-jsx(使nodejs支持jsx语法) $ npm install node
实验性 SSR 支持还处于试验阶段,你可能会遇到 bug 和不受支持的用例。请考虑你可能承担的风险。 注意 SSR 特别指支持在 Node.js 中运行相同应用程序的前端框架(例如 React、Preact、Vue 和 Svelte),将其预渲染成 HTML,最后在客户端进行脱水化处理。如果你正在寻找与传统服务器端框架的集成,请查看 后端集成指南。 下面的指南还假定你在选择的框架中有使用 SSR
从 3.8.0 开始,san 的服务器端渲染由 san-ssr 实现。如果你在使用 3.8.0 之前的 san,请参考 服务器端渲染(3.8.0 之前)。 San 的服务端渲染支持是基于 组件反解 的: 服务端输出的 HTML 中带有对视图无影响,能帮助组件了解数据与视图结构的标记片段 浏览器端,组件初始化时从标记片段理解组件结构,在后续用户操作时组件能正确响应,发挥作用 提示:由于组件运行环境需
info 如果您能了解下面这些技术,能加快您对本文的了解 vuex - Vue.js 应用程序开发的状态管理模式 Vue.js SSR - Vue.js 服务器端渲染 webpack - 编译构建工具 Lavas 服务器端渲染模板参考了 vue-hackernews 的渲染和开发机制,并且结合了 Lavas 的 App Shell 模板,导出的工程中会有 App Shell 等 如果您不了解 vu
Support in 2.8.0+ 介绍 什么是服务端渲染 服务端渲染(Server-Side Render),是指将单页应用(SPA)在服务器端渲染为 HTML 片段,发送到浏览器,然后为其绑定状态与事件,成为完全可交互页面的过程。 与客户端渲染的区别 后续简称服务端渲染为 SSR,客户端渲染为 CSR 如下图所示: 对比 SPA 站点 和 SSR 站点 在 SEO 区别: SSR 优势在于: