Certaines des réponses actuelles peuvent fonctionner dans votre scénario, mais elles ont des inconvénients :
- Ajoutant à la
window
signifie que votre projet Vue ne peut pas être rendu par le serveur, car les serveurs n'ont pas accès à l'objet window
objet.
- L'importation dans chaque fichier fonctionne bien, mais cela peut être pénible si vous devez vous rappeler de le faire dans chaque fichier.
Une autre approche consiste à ajouter votre bibliothèque au prototype Vue. Tous les composants héritent de ce prototype et pourront donc accéder à votre bibliothèque à partir de la balise this
mot-clé.
import _ from 'lodash';
Object.defineProperty(Vue.prototype, '$_', { value: _ });
Maintenant, lodash est disponible comme méthode d'instance pour tous les composants. Dans un fichier .vue, vous pouvez le faire sans importer quoi que ce soit :
export default {
created() {
console.log(this.$_.isEmpty(null));
}
}
L'avantage d'utiliser Object.defineProperty
plutôt qu'une affectation de propriété normale est que vous pouvez définir un descripteur qui vous permet de rendre la propriété en lecture seule, ce qu'elle sera par défaut. Cela empêche les composants consommateurs de l'écraser.
Ce point est expliqué plus en détail dans cet article de blog (que j'ai écrit).
Note : L'inconvénient de cette approche est que vous obtenez l'intégralité de la bibliothèque Lodash, même si vous n'avez besoin que d'une ou deux fonctions. Si c'est un problème, il est préférable d'utiliser import { reduce, whatever } from "lodash";
en haut du fichier qui en a besoin.
4 votes
Il est préférable d'inclure tous les modules requis dans le composant.
0 votes
Pourriez-vous être plus concis ? Où voulez-vous utiliser underscore exactement ? Dans vos modèles ou simplement dans vos méthodes / logique de composant ? Si vous voulez réduire la redondance, il me semble correct d'ajouter une bibliothèque apatride comme underscore JS à l'espace de nom global.
0 votes
@Jeff y a-t-il un moyen de le réutiliser ?
1 votes
@FranzSkuffka Je veux utiliser l'underscore dans les deux modèles de composants et dans la logique.
2 votes
Je ne suis pas d'accord. Les modules très courants comme Lodash devraient être importés globalement, de sorte que nous n'ayons pas besoin d'écrire
import lodash
partout.