关闭

vConsole_vue移动端调试

时间: 2019-08-04阅读: 2016标签: 调试
当我们在浏览器开发vue页面时,由于浏览器对于调试有天然的支持,我们开发起来很方便。但是现在已经进入了移动端时代,移动端页面的需求越来越大。

在开发移动端页面的时候我们通常是在浏览器完成开发完成,之后才在手机端测试,如果测试出现问题还得重新回到浏览器上寻找错误。甚至还有嵌入在APP的页面,经过调试之后还要重新发包。当然还有更加奇怪的现象,由于手机浏览器和Web浏览器的差异,经常会发现在Web浏览器上好好的,一到手机上就不行的情况。

因此首先我们需要一个能在手机端调试的插件。如果你还在使用alert一步步来定位移动端页面bug的话,不妨试试vConsole。


vConsole

vConsole是一个由微信公众平台前端团队研发的Web前端开发者面板,可用于展示console日志,方便开发、调试。可以在vConsole.js下载地址下载所需的js。下载解压之后,在dist文件夹中找到vconsole.min.js,加入工程中:

<script src="path/to/vconsole.min.js"></script>
<script>
  // init vConsole
  var vConsole = new VConsole();
  console.log('Hello world');
</script>

请注意,VConsole 只是 vConsole 的原型,而非一个已实例化的对象。所以在手动 new 实例化之前,vConsole 不会被插入到网页中。

在安装完vConsole之后,你以为事情就结束了吗?

还有一个很大的问题就是肯定不能让用户看到我们的调试页面的,因此我们需要偷偷给我们的程序设置后门。


动态引入代码

这里有两种设计的思路以供参考:

  1. 在程序中某个地方设置一个后门。点击10次或者长按10秒之后自动引入这段代码
  2. 通过运行环境来引入动态vConsole。即在测试阶段引入,而生产环境则不会引入这段代码。

设置后门

在程序中某个地方设置长按10秒自动引入代码。

首先长按10秒的效果需要3个事件结合才能产生。

  • @touchstart:开始长按
  • @touchmove:长安过程中移动
  • @touchend:结束长按

绑定事件

代码如下,在标签上引入这三个事件:

<div @touchstart="handleTouchstart" @touchmove="handleTouchmove" @touchend="handleTouchend">
   <van-col span="24" class="loginPage-title">title<an-col>
</div>

对应的方法:

handleTouchstart() {
  touchStart();
},
handleTouchmove() {
  touchMove();
},
handleTouchend() {
  touchEnd();
},

其中的touchStart,touchMove,touchEnd方法由外部文件import进来,便于统一管理,当然其实也可以直接在这个文件里实现。

长按10秒

首先什么才叫长按10秒。touchstart然后开始计时10秒之后肯定不叫长按10秒,这样就叫做点击过后10秒了。长按10秒应该是手指触碰连续10秒,期间不能触发touchmove和touchend事件。

因此思路应该是,touchstart开始计时,期间如果触发了touchmove和touchend事件则将计时器重置:

let timeOutEvent = null;

export const touchStart = () => {
    timeOutEvent = setTimeout(function () {
        longPress();
    }, 10000);

};
export const touchMove = () => {
    clearTimeout(timeOutEvent);
    timeOutEvent = 0;
}

export const touchEnd = () => {
    clearTimeout(timeOutEvent);
}

在longPress方法中去动态引入vConsole:

const longPress = () => {
    clearTimeout(timeOutEvent); //清除定时器
    timeOutEvent = 0;
    //执行长按要执行的内容
    vConsoleLog()
};

const vConsoleLog = () => {
    let mapScript = document.getElementById("vConsoleLog");
    if(mapScript){
        return;
    }
    let script = document.createElement('script');
    script.id = 'vConsoleLog';
    script.type = 'text/JavaScript';
    script.src = './console.js';
    document.body.appendChild(script);
}

这样,我们就在程序中植入了一个后门,需要调试的时候只需要长按10秒,vConsole就出来了。


根据环境动态引入

如果想要严谨一点,不希望用户在任何时候看到这个调试按钮的话,则可以根据环境(env)来引入vConsole。


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/5129

关闭

chrome的F12调试刷新或者内部跳转network日志消失的解决办法

开发者工具的Network面板中面有一个Preserve Log选项,勾选上即可,如果没有勾选,跳转页面或者刷新页面,之前的http请求日志都会被清空,勾选上,就会保留所有的日志信息。

javascript怎样调试代码?

查找编程代码中的错误被称为代码调试。调试并不简单。但幸运地是,所有现代浏览器都有内置的调试器。内置的调试器可打开或关闭,强制将错误报告给用户。

移动端调试工具推荐

vConsole腾讯出品的 Web 调试面板,相信不少前端小伙伴都用过。Charles 是一款强大的抓包工具,可以截取包括 https 在内的各种网络请求并方便的查看具体信息。weinre是一款很不错的网页检查工具,可以通过在本地启动一个 weinre 服务

10个用Console来Debug的高级技巧

在过去的十年中,我最热衷的事情之一就是前端开发(特别是JavaScript)。作为一个匠人,我喜欢专研各种工具。在本文,我会为你介绍一些用老式console来debug的技巧。

Flutter 应用调试

程序调试是程序投入运行之前,使用手工或编译程序等方法进行的测试,主要用以修正语法错误和逻辑错误。程序调试是保证计算机信息系统正确性的必不可少的步骤,在Flutter应用开发中,Android Studio和VSCode是两种比较常见的集成开发环境

js 反调试_JavaScript 反调试技术技巧

对于JavaScript来说,你只需要花一点时间进行调试和分析,你就能够了解到JavaScript代码段的功能逻辑:1. 检测未知的执行环境(我们的代码只想在浏览器中被执行);2. 检测调试工具(例如DevTools);3. 代码完整性控制;4. 流完整性控制;5. 反模拟;

JS断点调试,必备的javaScript的debug调试技巧

断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了。本文主要介绍了“逐语句执行”按钮、“逐过程执行”按钮、console控制台这三个工具,以及调试bug时的一些思路。

使用 tap 来快速 debug

在这里 tap 是一个可以用来快速调试、链式调用、匿名函数,还可以打印任何你想打印的东西的函数。为什么我们不用 console.log 这个老方式了?

Js调试:console对象

console.log方法用于在控制台输出信息。它可以接受一个或多个参数,将它们连接起来输出。warn方法和error方法也是在控制台输出信息,它们与log方法的不同之处在于,warn方法输出信息时,在最前面加一个黄色三角

调试 node.js 程序

在程序开发中,如何快速的查找定位问题是一项非常重要的基本功。在实际开发过程中,或多或少都会遇到程序出现问题导致无法正常运行的情况,因此,调试代码就变成了一项无法避免的工作

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!