vConsole 是框架無(wú)關(guān)的,可以在 Vue、React 或其他任何框架中使用,今天通過(guò)本文給大家介紹移動(dòng)端調(diào)試神器vConsole使用,感興趣的朋友一起看看吧
介紹
平時(shí)在web應(yīng)用開(kāi)發(fā)過(guò)程中,我們可以console.log去輸出一些信息或者看接口返回的信息及接口性能等情況,但是在移動(dòng)端,也就是在手機(jī)上,我們是看不到的。
這種情況下,可以選擇使用alert彈出一些信息,但是這種方法不怎么方便,也會(huì)阻斷JS線(xiàn)程,導(dǎo)致后面的線(xiàn)程都不執(zhí)行。也影響調(diào)試體驗(yàn)。
那么,如果將console.log應(yīng)用到移動(dòng)端呢?
需要借助第三方插件:vConsole
一個(gè)輕量、可拓展、針對(duì)手機(jī)網(wǎng)頁(yè)的前端開(kāi)發(fā)者調(diào)試面板。
vConsole 是框架無(wú)關(guān)的,可以在 Vue、React 或其他任何框架中使用。都有配套插件
https://gitee.com/Tencent/vConsole/tree/master/
官方文檔
功能特性
日志(Logs): console.log|info|error|…
網(wǎng)絡(luò)(Network): XMLHttpRequest, Fetch, sendBeacon
節(jié)點(diǎn)(Element): HTML 節(jié)點(diǎn)樹(shù)
存儲(chǔ)(Storage): Cookies, LocalStorage, SessionStorage
手動(dòng)執(zhí)行 JS 命令行
自定義插件
使用
方法一:使用 npm(推薦)
npm install vconsole
Import 并初始化后,即可使用 console.log 功能,如 Chrome devtools 上一樣。
import VConsole from 'vconsole';
const vConsole = new VConsole();
// 接下來(lái)即可照常使用 `console` 等方法
console.log('Hello world');
// 結(jié)束調(diào)試后,可移除掉
vConsole.destroy();
方法二:使用 CDN 直接插入到 HTML
<script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script>
<script>
// VConsole 默認(rèn)會(huì)掛載到 `window.VConsole` 上
var vConsole = new window.VConsole();
// 接下來(lái)即可照常使用 `console` 等方法
console.log('Hello world');
// 結(jié)束調(diào)試后,可移除掉
vConsole.destroy();
</script>
開(kāi)發(fā)環(huán)境顯示生成環(huán)境刪除
首先,咱們?cè)谧鰎eact、vue的單頁(yè)應(yīng)用開(kāi)發(fā)的時(shí)候,相信大家對(duì)配置文件里的process.env并不眼生。 我們只需要生產(chǎn)環(huán)境不加載vConsole 開(kāi)發(fā)和測(cè)試加載vConsole 并且限制只在手機(jī)端顯示,因?yàn)閜c有游覽器的調(diào)試工具了,如果條件允許我們還可以添加生產(chǎn)環(huán)境開(kāi)關(guān)按鈕的方式觸發(fā)調(diào)試面板
vue案例
如果不懂process.env的話(huà)自行百度搜索下很簡(jiǎn)單的,就好比全局變量一樣
在main.ts里面添加如下代碼
import { createApp } from 'vue'
import App from './App.vue'
import './registerServiceWorker'
import store from './store'
import VConsole from 'vconsole';
import router from './router'
createApp(App).use(store).use(router).mount('#app')
// 判斷是否是pc設(shè)備
const isPc = () => {
const userAgentInfo = navigator.userAgent;
const Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
"iPad", "iPod"];
let flag = true;
for (let v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
}
//如果不是生產(chǎn)環(huán)境并且不是pc設(shè)備那么就顯示調(diào)試
if (process.env.NODE_ENV != "prod" && !isPc()) {
console.log(process.env.NODE_ENV);
const vConsole = new VConsole();
}