Hice dos repositorios como complementos donde coloco mis llamadas API.
plugins/repos/UserRepository.js (lo necesito en /views/users.vue)
plugins/repos/PostRepository.js (lo necesito en /views/posts.vue)
Para utilizar estos complementos tengo dos opciones:
Registre estos complementos globalmente incluyéndolos en la matriz de complementos en nuxt.config.js
Importe manualmente cada repositorio en el componente vue respectivo.
En el caso de la primera opción, mi repositorio se ve así:
export default (ctx, inject) => { const data={ getAll(){ return context.$axios .$get("/users"); } } inject('userRepo', data); }La principal ventaja del primer enfoque es que puedo acceder al contexto. Pero si lo importo manualmente en mi componente (segundo enfoque), entonces necesito pasar manualmente el contexto en el complemento.
Pero la principal desventaja del primer enfoque es que hace que el complemento esté disponible universalmente. Entonces, mi pregunta principal es: si el primero es un mal enfoque en términos de consumo de memoria, ya que no necesito PostRepository en users.vue, pero Nuxt lo importará automáticamente porque lo mencioné en la matriz de complementos en nuxt.config .js?
Dígame cuál es la mejor manera de manejar esto, ya que tenía docenas de repositorios, por lo que registrarlos globalmente es una buena idea.
Prácticamente te has respondido a ti mismo a tu pregunta. En cuanto a memoria y también en cuanto a tiempos de carga de tu SPA, siempre será mejor hacer una importación local que tener mucho global aunque solo lo uses un 5% del tiempo.
Luego, siempre puede acceder al contexto por sí mismo como de costumbre sin necesidad del complemento, también conocido como this.$axios . ¿Cuál sería el caso de uso de bloqueo aquí?
Si está trabajando con Nuxt3, también puede usar componibles.