什么,你还不会调试线上 vue 组件?

点击上方 前端Q,关注公众号

回复加群,加入前端Q技术交流群

前言

彦祖们,在日常开发中,不知道你们是否遇到过这样的场景

在本地测试开发 vue 组件的时候非常顺畅

一上生产环境,客户说数据展示错误,样式不对...

但是你在本地测试了几次,都难以复现

定位方向

这时候作为老 vuer,自然就想到了 vue devtools

但是新问题又来了,线上环境我们如何开启 vue devtools 呢?

案例演示

让我们以 element-ui 官网为例

先看下此时的 chrome devtools 是没有 Vue 的选项卡的753b65f7b3a561a1c410cdb7e3b590b1.png

一段神奇的代码

其实很简单,我们只需要打开控制台,运行一下以下代码

var Vue, walker, node;
walker = document.createTreeWalker(document.body,1);
while ((node = walker.nextNode())) {
  if (node.__vue__) {
    Vue = node.__vue__.$options._base;
    if (!Vue.config.devtools) {
      Vue.config.devtools = true;
      if (window.__VUE_DEVTOOLS_GLOBAL_HOOK__) {
        window.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit("init", Vue);
        console.log("==> vue devtools now is enabled");
      }
    }
    break;
  }
}
024edc26a821443fdb6971583fccc7f7.png

显示 vue devtools now is enabled

证明我们已经成功开启了 vue devtools

功能验证

然后再重启一下 chrome devtool 看下效果

9dfebe040850a378169099b2e303c8fe.png

我们会发现此时多了一个 Vue 选项卡,功能也和我们本地调试一样使用

对于遇到 vue 线上问题调试,真的非常好用!

vue3

最近无意间又看到了这段代码,适配 vue3 亲测 vben 能用 https://vben.vvbin.cn/#/login?redirect=/dashboard

41cf2dfa2f9fccfc46aed5df2c291109.png
const el = document.querySelector('#app')
const  vm = el.__vue_app__

window.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.push({
    app: vm,
    version: vm.version,
    types: {
      Comment: Symbol("Comment"),
      Fragment: Symbol("Fragment"),
      Static: Symbol("Static"),
      Text: Symbol("Text"),
    },
})
if (window.__VUE_DEVTOOLS_GLOBAL_HOOK__) {
    window.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit("init", vm);
    console.log("==> vue devtools now is enabled");
}

写在最后

本次分享虽然没有什么技术代码,重在白嫖

感谢彦祖们的阅读

96db23adc91bda666578038c1e721771.png

往期推荐

前端实现画中画超简单,让网页飞出浏览器

221eddaf6be1fc6174ee29947fa601e6.png

网页疯狂自动刷新,发生了什么?业务:我传了一张两亿像素的图片而已

c7745675447e8a3ec3b6b4d1e31911c7.png

微服务常见限流方案及TSF限流原理

140cadc14ef9d973d9717e9523679289.png


最后

  • 欢迎加我微信,拉你进技术群,长期交流学习...

  • 欢迎关注「前端Q」,认真学前端,做个专业的技术人...

e3e03a3611ec06fd1744a3519860c2e4.jpeg

e43abc57f5e4d0f26be52b800eea132e.png

点个在看支持我吧

15b4f8a71b056e638d18c6cb8225ffee.gif

Vue3 本地开发环境调试线上接口通常需要模拟真实环境的行为,以便于查看和处理预期的网络请求响应。你可以采用以下步骤进行配置: 1. **代理设置** (axios or vue.config.js): - 对于使用 axios 的项目,可以在 `src/api/index.js` 或者 `.env.development` 文件中配置跨域代理。例如,可以设置一个全局的 proxyTable,如: ```javascript import axios from 'axios'; axios.defaults.baseURL = process.env.BASE_API || 'https://your-api-url.com'; // 线上地址 const instance = axios.create({ baseURL: '/api', // 假设你的 API 路径相对基础 URL 是 '/api' withCredentials: true, headers: { 'Content-Type': 'application/json' }, }); window.axios = instance; ``` - 如果你在 Vue.config.js 中设置,可以这样: ```javascript module.exports = { devServer: { proxy: { [process.env.VUE_APP_BASE_API]: { target: 'https://your-api-url.com', changeOrigin: true, pathRewrite: { '^/api': '' } // 用于重写路径 } } } }; ``` 2. **Mock 数据** (vue-mockjs, axios-mock-adapter等): - 使用 Mock 库(如 vue-mockjs 或 axios-mock-adapter)可以创建本地模拟数据,这在开发阶段非常有用,能避免频繁访问线上生产环境。 3. **环境变量区分**: - 为了防止意外发送生产环境的数据,在实际部署前,确保在开发环境中已将线上 API 地址替换为测试服务器地址。 4. **Code Splitting 和 Preloading**: - 如果有异步路由或懒加载组件,确保这些资源指向正确的本地或测试服务器地址。 完成上述配置后,本地开发环境下对线上接口的请求将通过代理转发到本地模拟的环境,方便你在控制台查看和调试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值