【问题标题】:nuxtServerInit and API RequestsnuxtServerInit 和 API 请求
【发布时间】:2020-06-05 14:51:47
【问题描述】:

我正在使用 nuxt.js 并且我正在使用 Firebase 作为 API。我正在使用 nuxtServerInit 从 firebase API 获取我的所有产品。我只有 3 个类别和大约 20 种产品,因此 API 请求非常小。

这意味着我可以一次性拿到我所有的产品,然后我会发送这些产品并将它们放入我的商店。

我只是想在我开始完全构建应用程序之前先问问这是否是正确的方法?

  • 使用 nuxtServerInit 在 1 次调用中获取所有产品和整个 API
  • 将产品列表存储到商店中
  • 我使用 _lodash _.get(params.id)_.find(params.id) 来查找产品的详细信息,而不是使用 Axios 再次调用的后续产品详细信息页面。

所以本质上是从 API 获取而不是使用存储进行所有其他访问,而不是通过 Axios 在所有其他页面上的异步数据?

路线 我的路线都是动态的

  • 产品(列出所有产品)
  • 类别(例如 t-shrits)
  • 细节(衬衫的细节)

nuxtServerInit

export const actions = {
    async nuxtServerInit(context){
        return axios.get(URL+'/products.json')
        .then(response => {
            context.dispatch('products/getProducts', response.data)
        })
        .catch(e => context.error(e));
    }
};

【问题讨论】:

  • 您能否详细说明您正在维护哪些路线?
  • 感谢您的澄清!我建议在 asyncDatafetch 方法内对 firebase 的特定路由进行 API 调用,而不是将数据存储到 VueX 并访问它
  • 好的,谢谢....你能给出原因吗?我想是因为我有一个小的 API,我每次都可以从商店中获取产品,而不是每次都访问 API 端点。我已经设法很容易地访问动态路线的数据
  • IMO 网络上没有小事!只从 API 中询问页面所需的那么多数据。然后,如果数据不会经常更改,您可以将其存储在浏览器级别或使用Vuex-persist。我希望我已经回答了你的问题!
  • 好的,谢谢....我就是这么想的。

标签: vue.js nuxt.js


【解决方案1】:

Nuxt.js documentaion

如果在 store 中定义了动作 nuxtServerInit 并且模式为 通用,Nuxt.js 将使用上下文调用它(仅从 服务器端)。当我们在我们想要的服务器上有一些数据时,它很有用 直接给客户端。

如果您有少量数据(3 个类别和大约 20 种产品)并且您想直接在客户端上使用该数据,我认为将其存储在 state 中是完全可以的。因为,这将帮助您在导航期间避免额外的 API 调用。

nuxtServerInit 将在第一个页面加载时填充存储。而且您无需再担心任何 API 请求。我认为这也会给您带来性能提升和响应能力。

最后但同样重要的是,asyncData 仅在页面中可用(不在组件中),但 fetch 可以从您的任何 Vue 组件中调用。

【讨论】:

  • 非常感谢...此外,我更改了 firebase 中的一些数据,然后刷新了页面并更新了页面,因此 nuxtServerInit 必须再次访问 API。它是否知道数据何时以某种方式发生了变化,或者 nuxtServerInit 是否会在路由之间再次触发?
  • nuxtServerInit 不会在路由之间触发,并且当您的数据更改时需要刷新页面。如果您有经常更改的数据,您可能需要考虑使用fetch 方法。
  • 点赞!更重要的问题是 nuxtserverinit 是否阻塞?这意味着如果您的 api 有大量数据,页面将不会快速呈现,考虑一个包含 5000 个项目的数组,其中每个项目是一个由 8 个字母组成的字符串
  • @PirateApp 我认为它是可选的。如果您将其定义为异步操作,则 nuxt 服务器将一直等到它完成 (source)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
相关资源
最近更新 更多