如果他在单独的文件中创建,如何在 chrome 控制台中调用 Vue 实例

Posted

技术标签:

【中文标题】如果他在单独的文件中创建,如何在 chrome 控制台中调用 Vue 实例【英文标题】:How to call Vue instance in chrome console, if he created in a separated file 【发布时间】:2020-12-19 05:28:09 【问题描述】:

如何在 chrome 控制台中调用 Vue 实例,如果它是在一个单独的文件 new Vue( ... ) 中创建的。赞console.log(vm.user.id)

new Vue(
  el: '#app',
  data: 
    message: 
      id: 1,
      title: 'TEST VUE'
    
      
);

【问题讨论】:

【参考方案1】:

如果你安装了 Vue DevTools,它会在你点击它们时为你的 Vue 实例创建别名:

注意组件名称右侧的浅色文本。在某些屏幕上可能很难看到。

在上图中,$vm1$vm2 可以在控制台中访问,并将引用相应的 Vue 实例。

当您在 DevTools 中单击时,这些别名会发生变化。 $vm0 将引用您单击的最后一个组件。

【讨论】:

对于尝试 Vue3 的勇敢者,vue3 devtools 将 devtools 中选定组件的访问权限从“$vm0”更改为“$vm.proxy”【参考方案2】:

最好的方法是使用 Vue Chrome 扩展程序as described by @skritle。如果您需要的话,您还可以获得带有花里胡哨的漂亮 UI 来查看数据、计算属性等。

但是,我不得不在没有扩展的环境中执行此操作。在这些情况下,您只需将实例添加到全局对象window(浏览器)或global(nodejs)。

const app = new Vue(...);
window.$appRef = app; // Remove this line for release

然后在浏览器中加载应用程序,您可以在控制台中访问它:

console.log($appRef)

这只能用作紧急逃生舱口,因为它会污染全局对象(可能导致名称冲突和内存泄漏),并且应该在使用后进行清理。您也可以将其包装在if condition to ensure it is used only during development

if (
    process.env.NODE_ENV !== 'production' &&
    process.env.NODE_ENV !== 'test' &&
    typeof console !== 'undefined'
)
    window.$appRef = app;

【讨论】:

是的,但是请问您如何访问数据? Chrome 只是告诉我应用是代理 @Richard 抱歉,刚刚看到这个 - 您可以像在应用程序中一样访问它(使用 $appRef.somePropertyOnTheVueInstance【参考方案3】:

问题已经有它被接受的答案,但值得一提的是为 vue 捕获不同实例的推荐模式 - https://vuejs.org/v2/guide/instance.html#Creating-a-Vue-Instance

只需为不同的vue instances 自定义variable

// Use var to mark this variable a global, make sure it's wrapped directly to global execution context, so that you can get it at window scope
var vueInstance1 = new Vue( 
  el: '#app1',
  data:  title: 'Vue Instance 1' 
)
var vueInstance2 = new Vue(
  el: '#app2',
  data:  title: 'Vue Instance 2' 
)

console.log('Instance 1- ', vueInstance1.title ) // Easily access to instance 1
console.log('Instance 2- ', vueInstance2.title ) // Easily access to instance 2
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app1"> title </div>
<div id="app2"> title </div>

【讨论】:

以上是关于如果他在单独的文件中创建,如何在 chrome 控制台中调用 Vue 实例的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS swift 3 中创建单独的文件夹

如何在使用它的 ViewController 上调整自定义(在单独的文件中创建)UIView 高度?

在python中如何创建角色?

如何在 Java 中创建一个 zip 文件

如何在单独的线程上运行函数

您可以通过在 chrome 开发工具(控制台)中创建的功能吗?