多くの(50以上の)単一ファイルコンポーネントを含む Vue 2プロジェクトがあります。ルーティングにはVue-Router、状態にはVuexを使用しています。
helpers.jsと呼ばれるファイルがあり、文字列の最初の文字を大文字にするなどの汎用関数の束が含まれています。このファイルは次のようになります。
export default {
capitalizeFirstLetter(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
}
私のmain.jsファイルはアプリを初期化します:
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')
私のApp.vueファイルにはテンプレートが含まれています:
<template>
<navbar></navbar>
<div class="container">
<router-view></router-view>
</div>
</template>
<script>
export default {
data() {
return {
//stuff
}
}
}
</script>
次に<router-view>
、一連の単一ファイルコンポーネントを用意します。Vue -Router は、App.vueテンプレートのタグ内への移動を処理します。
今度は、私が使用する必要があるとしましょうcapitalizeFirstLetter()
に定義されているコンポーネント内の機能をSomeComponent.vue。これを行うには、まずインポートする必要があります。
<template>Some Component</template>
<script>
import {capitalizeFirstLetter} from '../helpers.js'
export default {
data() {
return {
myString = "test"
}
},
created() {
var newString = this.capitalizeFirstLetter(this.myString)
}
}
</script>
すべてではないにしても、多くの異なるコンポーネントに関数をインポートすることになるため、これはすぐに問題になります。これは繰り返しのようであり、プロジェクトの維持管理も難しくします。たとえば、helpers.jsまたはその中の関数の名前を変更する場合は、それをインポートするすべてのコンポーネントに移動して、インポートステートメントを変更する必要があります。
簡単に言えば、helpers.js内の関数をグローバルに利用できるようにして、最初にそれらをインポートしてから関数名の前に付加しなくても、コンポーネント内で呼び出すことができるようにするにはどうすればよいthis
ですか?私は基本的にこれを行うことができるようにしたいです:
<script>
export default {
data() {
return {
myString = "test"
}
},
created() {
var newString = capitalizeFirstLetter(this.myString)
}
}
</script>
this
。