Начиная с Vue Docs :
В Vue.js каждый экземпляр Vue является ViewModel.
Я немного запуталсяоб этом после прочтения большого количества статей о шаблоне проектирования, таких как MVC, MVP и MVVM.
Все мы знаем, что в экземпляре Vue или компоненте Vue (который также является экземпляром Vue) у нас есть <template>
, которые используют синтаксис на основе HTML. Не является ли деталь представлением в MVVM?
И в компоненте Vue есть data()
, computed
. Разве они не Модель в MVVM?
Ниже приведена структура Vue SFC, которую я делю на Model, View и ViewModel.Если с этим что-то не так.Пожалуйста, помогите мне исправить это, а также помогите мне лучше понять MVVM при использовании JavaScript-Framework на основе MVVM.
<template>
<!-- the template part should be the View in MVVM since they don't contain any business logic but only the UI components. Which perfectly match the description of the View in MVVM.-->
</template>
<script>
export default = {
data () {
return {
// the data should be the Model in MVVM, because they stand for their own and are the "actually" content of the app
}
},
computed: {
// computed properties should also be the Model in MVVM. When using vuex, I can, for example, get data with HTTP GET request through the vuex actions and parse the data, store it in the vuex store. When I need to use them, I get them from the computed in any child component I would like to.
},
methods: {
// this should belong to the ViewModel in MVVM.
}
}
</script>
<style scoped>
/* the style should be the View in MVVM. Because they are only responsible for how to present the data to the user.*/
</style>
И, следовательно, я думаю store.js
(используется для vuex в качестве централизованного управления состоянием)также принадлежит модели.Поскольку он содержит почти всю бизнес-логику и сохраняет данные, которые мы получили от другого API или от самого пользователя.
Так что, в конце концов, когда мы читаем, фреймворк базируется на MVVM или MVC или MVW (Который Angular говорит: Model View Что это действительно означает и имеет ли это значение для реальной веб-разработки?