Alcune delle risposte attuali può funzionare nel vostro scenario, ma non sono "buone pratiche":
- L'aggiunta all'oggetto
window
significa che il tuo progetto Vue non può essere reso come server, perché i server non hanno accesso all'oggetto window
.
- L'importazione in ogni file funzionerà, ma è un problema perché devi ricordarti di farlo in ogni file.
Un approccio migliore è aggiungere la libreria al prototipo Vue.Tutti i componenti ereditano da questo in modo che ora saranno tutti in grado di accedere alla libreria dalla parola chiave this
.
import lodash from 'lodash';
Object.defineProperty(Vue.prototype, '$lodash', { value: lodash });
Ora il lodash è disponibile come metodo di istanza per tutti i componenti. In un file .vue si può fare questo senza importare nulla:
export default {
created() {
console.log(this.$lodash.isEmpty(null));
}
}
Il vantaggio di utilizzare Object.defineProperty
piuttosto che un'assegnazione di proprietà normale è che si può definire un descrittore, che ti permette di fare la proprietà di sola lettura, che sarà di default.
Questo è più ampiamente spiegato in this blog post (che ho scritto).
È consigliabile includere tutti i moduli richiesti all'interno del componente – Jeff
Potrebbe essere più conciso? Dove esattamente vuoi usare il carattere di sottolineatura? nei tuoi modelli o solo nella tua logica di metodi/componenti? Se si vuole ridurre la ridondanza mi sembra ovvio se si aggiunge una libreria senza stato come underscore JS allo spazio dei nomi globale. –
@Jeff esiste un modo per riusarlo? – antoniputra