1

我制作了两个存储库作为插件,用于放置我的 API 调用。

plugins/repos/UserRepository.js(我需要在 /views/users.vue 中)

plugins/repos/PostRepository.js(我需要在 /views/posts.vue 中)

要使用这些插件,我有两个选择:

  1. 通过在 nuxt.config.js 的 plugins 数组中列出它们来全局注册这些插件

  2. 在各自的 vue 组件中手动导入每个 repo。

在第一个选项的情况下,我的回购看起来像这样:

export default (ctx, inject) => {

const data={
        getAll(){
            return context.$axios
            .$get("/users");
        }
    }

    inject('userRepo', data);
}

第一种方法的主要优点是我可以访问上下文。但是如果我在我的组件中手动导入它(第二种方法),那么我需要在插件中手动传递上下文。

但是第一种方法的主要缺点是它使插件普遍可用。所以我的主要问题是:第一个在内存消耗方面是一种不好的方法,因为我不需要 users.vue 中的 PostRepository 但它仍然是由 Nuxt 自动导入的,因为我在 nuxt.config 的插件数组中提到了它.js?

请告诉我处理此问题的最佳方法是什么,因为我有数十个存储库,因此在全球范围内注册所有存储库是个好主意?

4

1 回答 1

2

你几乎回答了你的问题。在内存方面以及 SPA 的加载时间方面,即使您只使用 5% 的时间,最好进行本地导入而不是全局导入。

然后,您始终可以像往常一样自行访问上下文,而无需插件 aka this.$axios。这里的阻塞用例是什么?

如果你正在使用 Nuxt3,你也可以使用可组合。

于 2021-12-01T13:47:18.607 回答