我构建了一个Vue SPA,它有一堆用于输入数据的datatables和userform,这些数据是从sql db发送和提取的。当我最初开发我的vue应用程序时,我没有使用状态管理(pinia)来存储任何数据,而是在每次安装组件时调用axios查询,每次通过vue-router重新加载组件时都会刷新。然而,我现在正试图利用Pinia存储,这样我在技术上也可以在其中调用signalr请求,以保持实时数据流向存储。但是,在初始加载组件时,我应该从哪里获取数据呢?我应该在挂载时调用组件中的axios查询,还是在挂载组件时调用pinia存储中执行axios查询的函数?或者有什么方法可以让pinia存储默认加载数据?
我不确定pinia、axios和初始/持续数据加载的正确方法是什么。
1条答案
按热度按时间yuvru6vn1#
这是一个基于观点的问题,但我认为每个开始使用Pinia和Vue的人都会问。不会有正确的答案。我只是想分享我认为Vue项目的好结构。
我总是把我的应用程序分成
tiers
。每一层都通过一个接口与另一层通信,因此我们可以轻松地在库/API之间切换,而无需更新其他层中的任何代码。你可能听说过
MVC
设计模式,所以这个模式有点像它。我们有3层View
、State management
和API
。View
层从State Management
层获取数据。如果数据存在,State Management
层将返回它。如果数据不存在,则State Management
调用API
来检索它每一层都通过一个接口与另一层通信,在我们的例子中,它只是一个函数。Let表示您想构建一个产品页面,因此您想通过其句柄获取产品。现在,在
State management
层中,您可以定义如下操作在
API
层中,您可以定义如下函数:因此,无论你使用什么库,你都必须保持这些函数的形状不变。这里的形状是输入(
handle
)和输出(Product
)。如果可以做到这一点,您可以在Pinia/Vuex
、axios/fetch
或任何您想要的代码之间切换,而无需修改其他层代码