Вероятно, это не лучший пример того, почему кто-то захочет экспортировать / импортировать переменные из одного javascript в другой, но, надеюсь, это достаточно хорошо.
У меня есть один файл javascript, где я инициирую переменную, давайте назовем эту переменную counter и файл javascript, который находится в CounterModel.js
.У меня также есть файл javascript, который действительно что-то делает с моим счетчиком, который называется CounterController.js
.
. В моих файлах vue я хочу запустить свой счетчик в App.vue
и изменить его в Counter.vue
.
Итак, у меня есть такая настройка ниже, и она дает мне три похожих предупреждения, поэтому я, должно быть, делаю что-то не так.Поэтому я хотел бы спросить:
Что здесь не так?
вывод
WARNING Compiled with 3 warnings 06:35:49
warning in ./src/App.vue?vue&type=script&lang=js&
"export 'default' (imported as 'counter') was not found in './api/CounterModel'
warning in ./src/components/counter/Counter.vue?vue&type=script&lang=js&
"export 'default' (imported as 'counterController') was not found in '../../api/CounterController'
warning in ./src/components/counter/Counter.vue?vue&type=script&lang=js&
"export 'default' (imported as 'counterController') was not found in '../../api/CounterController'
CounterModel.js
export let counter
async function initiateCounter () {
counter = 0
}
module.exports = {
initiateCounter
}
CounterController.js
import { counter } from './CounterModel'
async function incrementCounter () {
counter++
}
async function getCounter () {
return counter
}
module.exports = {
incrementCounter,
getCounter
}
App.vue
<template>
<div>
<router-view></router-view>
</div>
</template>
<script>
import counter from '~/api/CounterModel'
export default {
name: 'App',
async created () {
await counter.initiateCounter()
}
}
</script>
Счетчик.vue
<template>
<div>
<button v-on:click="incrementCounter">Add 1</button>
{{ counter }}
</div>
</template>
<script>
import counterController from '~/api/CounterController'
export default {
name: 'Counter',
data () {
return {
counter: null
}
},
methods: {
incrementCounter: async function () {
counterController.incrementCounter()
},
getCounter: async function () {
this.counter = counterController.getCounter()
}
},
async created () {
await this.getCounter()
}
}
</script>