Vuex Store 是否可以从控制台或客户端浏览器访问?

Is Vuex Store accessible from console or from client's browser?

我正在构建这个 Vue 2 应用程序,我一直在阅读应该使用 Vuex 状态管理,一开始我不太理解它的概念,但现在在玩过 Vue 之后,我明白了它是a most 对于更大的应用程序。

但我的问题是来自 Dev 控制台的人或以任何形式访问存储在 store.js 中的数据,我的意思是那些我不呈现给浏览器的数据?

我可以将敏感数据保存在存储中吗,所谓敏感,我的意思是,用户点击了这个 link,向这个用户发送了消息,在这个页面上花了很多时间等等...同时上传所有这些数据到我的数据库..

Vuex Store 适合这种 work/job 吗?

干杯

can someone from Dev console or in any form access data which are stored in store.js

简答:否
更长的答案:取决于他们偷偷摸摸。但我不会太担心这个......因为(我假设)你计划将收集的数据发送到某种类型的 API,即使他们无法访问 Vuex 商店......他们可以仍然看到 AJAX 请求发出。

Can I keep sensitive data on store

在客户端保留任何类型的私人或敏感数据通常不是一个好主意。但在你的特定情况下,我认为这很好,因为你定义为 "sensitive" 的只是一些关于用户操作的元数据(又名:他们的历史)。

Is Vuex Store for this kind of work/job ?

您几乎可以在 Vuex 中存储任何内容。对数据类型没有真正的限制......只有多少(我不建议将 500mb 图像转换为字符串并将其放入商店......)

是的,他们可以。

我使用的调用是

document.getElementsByTagName('a')[0].__vue__.$store.state

这假设第一个 link 具有 vue 属性,几乎总是如此。如果没有,请尝试其他标签。 UI 令人不快,但足以自我记录。这是一个有用的调试工具,也是用户可以做的事情。

当然,有决心和熟练的用户可以编写一个浏览器插件来放置一个好的UI。或者这就是 Vue.js devtools extension for Chrome 的作用?我还没有真正使用过它。

您可以在Chrome中使用Vue devtools查看商店:

你可以使用

__VUE_DEVTOOLS_GLOBAL_HOOK__.store

这对我有用:

_this.$store

2022 年答案

视点 2:

Array.from(document.querySelectorAll('*')).find(e => e.__vue__).__vue__.$store.state

视点 3:

Array.from(document.querySelectorAll('*')).find(e => e.__vue_app__).__vue_app__.config.globalProperties.$store.state

此代码适用于所有生产站点,包括远程移动调试,并且不需要开发模式。

dspeyer 的回答是我回答的基础,但基于 <a> 标签的回答并不适用于所有应用程序。所有其他答案都假定 Vue 处于开发模式,不适用于移动网络浏览器上的生产站点。感谢 Joe Maffei 的 Vue 3 更新。