Ich habe ein Vue 2-Projekt, das viele (50+) Einzeldateikomponenten enthält . Ich benutze Vue-Router für das Routing und Vuex für den Status.
Es gibt eine Datei namens helpers.js , die eine Reihe von allgemeinen Funktionen enthält, z. B. die Großschreibung des ersten Buchstabens einer Zeichenfolge. Diese Datei sieht folgendermaßen aus:
export default {
capitalizeFirstLetter(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
}
Meine Datei main.js initialisiert die App:
import Vue from 'vue'
import VueResource from "vue-resource"
import store from "./store"
import Router from "./router"
import App from "./components/App.vue"
Vue.use(VueResource)
const app = new Vue({
router: Router,
store,
template: '<app></app>',
components: { App }
}).$mount('#app')
Meine App.vue- Datei enthält die Vorlage:
<template>
<navbar></navbar>
<div class="container">
<router-view></router-view>
</div>
</template>
<script>
export default {
data() {
return {
//stuff
}
}
}
</script>
Ich habe dann eine Reihe von Einzeldateikomponenten, mit denen Vue-Router innerhalb des <router-view>
Tags in der App.vue-Vorlage navigiert.
Angenommen , ich muss die capitalizeFirstLetter()
Funktion in einer Komponente verwenden, die in SomeComponent.vue definiert ist . Dazu muss ich es zuerst importieren:
<template>Some Component</template>
<script>
import {capitalizeFirstLetter} from '../helpers.js'
export default {
data() {
return {
myString = "test"
}
},
created() {
var newString = this.capitalizeFirstLetter(this.myString)
}
}
</script>
Dies wird schnell zu einem Problem, da ich die Funktion in viele verschiedene Komponenten importiere, wenn nicht in alle. Dies scheint sich zu wiederholen und erschwert auch die Wartung des Projekts. Wenn ich beispielsweise helpers.js oder die darin enthaltenen Funktionen umbenennen möchte, muss ich in jede einzelne Komponente, die sie importiert, gehen und die import-Anweisung ändern.
Lange Rede, kurzer Sinn : Wie mache ich die Funktionen in helpers.js global verfügbar, damit ich sie in jeder Komponente aufrufen kann , ohne sie zuerst importieren und dann this
dem Funktionsnamen voranstellen zu müssen? Grundsätzlich möchte ich dazu in der Lage sein:
<script>
export default {
data() {
return {
myString = "test"
}
},
created() {
var newString = capitalizeFirstLetter(this.myString)
}
}
</script>
this
.