前端面试每日-31-第203天

今天的知识点 (2019.11.05) —— 第203天 (我也要出题)[html] canvas的width与height属性的值可不可以带单位?[css] height和line-height的区别是什么呢?[js] 你平时是怎么调试js的?会断点调试吗?断点调试有什么技巧呢?[软技能] 前端如何防止XSS攻击?《论语》,曾子曰:“吾日三省吾身”(我每天多次反省自己)。 前端面试每日3+1题,以面试题来驱动学习,每天进步一点! 让努力成为一种习惯,让奋斗成为一种享受!相信 坚持 的力量!!!欢迎在 Issues 和朋友们一同讨论学习! 项目地址:前端面试每日3+1 【推荐】欢迎跟 jsliang 一起折腾前端,系统整理前端知识,目前正在折腾 LeetCode,打算打通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎点个Star, 同时欢迎微信扫码关注 前端剑解 公众号,并加入 “前端学习每日3+1” 微信群相互交流(点击公众号的菜单:进群交流)。 学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布面试题(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢迎大家到Issues交流,鼓励PR,感谢Star,大家有啥好的建议可以加我微信一起交流讨论!希望大家每日去学习与思考,这才达到来这里的目的!!!(不要为了谁而来,要为自己而来!)交流讨论欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎点个[Star] https://github.com/haizlin/fe...

November 5, 2019 · 1 min · jiezi

whistle跨平台web调试代理工具

whistle是基于Node实现的跨平台web调试工具,由于工作需要代理服务,记录一下使用whistle的坑和技巧,方便回顾。 Github地址 : https://github.com/avwo/whistle如何使用whistle 启动whistle w2 start由于默认端口是8899,如需修改,可以 w2 start -p 8008重启 w2 restart关闭 w2 stop配置代理whistle需要手动配置浏览器代理或者系统代理,这里介绍配置浏览器代理的过程 配置浏览器代理 chrome浏览器下,在扩展程序商店里搜索Switchy Omega开启whistle后,打开Switchy Omega,代理地址为127.0.0.1,代理端口为你启动whistle时的端口(默认8899),然后在本地打开 http://local.whistlejs.com/ 配置代理文件,同时在扩展程序中要选回你需要代理的端口。

June 10, 2019 · 1 min · jiezi

React常用开发调试工具

在开发react项目时,我们需要用到一些开发和调试工具来辅助,我整理了一下4个好用的工具。 1. ESLint大家在开发中应该都有用到这个工具,它是Javascript和JSX的语法检查工具,当一个团队一起开发一个项目时,能用它保持代码风格一致。 安装$ npm install eslint --save-dev安装之后,就可以在项目根目录中创建一个.eslintrc文件来进行规则配置,在eslint中有很多的规则,可能自己去选择参数配置会有遗漏,一般都是用airbnb的模板,在github上,它已经有8万+star了。使用airbnb的模板,要先进行以下安装: $ npm install eslint-config-airbnb --save-dev然后在.eslintrc中添加配置: { "extends": "airbnb", // 这里的extends要加上airbnb "parser": "babel-eslint", "rules": { "arrow-body-style": [0], "consistent-return": [0], "generator-star-spacing": [0], "global-require": [1], "import/extensions": [0], "import/no-extraneous-dependencies": [0], "import/no-unresolved": [0], "import/prefer-default-export": [0], "jsx-a11y/no-static-element-interactions": [0], "no-bitwise": [0], "no-cond-assign": [0], "no-else-return": [0], "no-nested-ternary": [0], "no-restricted-syntax": [0], "no-use-before-define": [0], "react/forbid-prop-types": [0], "react/jsx-filename-extension": [1, { "extensions": [".js"] }], "react/jsx-no-bind": [0], "react/prefer-stateless-function": [0], "react/prop-types": [0], // 这些react开头的都是针对react独有的 "require-yield": [1] }}(附上github链接:https://github.com/airbnb/jav...) ...

May 25, 2019 · 1 min · jiezi

如何提高后台服务应用问题的排查效率日志-VS-远程调试

转眼间,距离Jerry最近一篇文章推送已经过去了一个多月的时间了。 公众号更新的频率降低,不是因为Jerry偷懒,而是由于从春节过后,我所在的SAP成都研究院数字创新空间整个团队,一直在忙一个5月份需要交付的项目上。 Jerry每天的工作量像下面这张图这样: 这个项目里Jerry负责的是后台开发工作,我用nodejs开发了若干微服务,每个微服务实现一个特定的业务逻辑。这些微服务由Jerry另外开发的一个编排器(Orchestra)统一调度。整套后台实现部署在亚马逊云平台(Amazon Web Service,以下简称AWS)上。 离交付日期越来越近了,我们的功能也赶得差不多了。本地测试运行得很好的场景,部署到AWS上运行后出现了一些bug。比如昨天就遇到一个棘手的bug,因此有了今天这篇文章。 2014年五一节的前一天,当时Jerry还在SAP CRM开发团队工作,负责处理SAP CRM中间件的一个bug。这个bug和代码执行时序有关,每执行一次只有40%的几率能重现,花了我整整一天(8个小时)的时间调试。因为重现bug的场景太复杂,需要调试的ABAP代码量太大,所以让我印象深刻。那个bug处理完之后,我也对自己花了8小时才搞定该bug的效率很不满意,因此写了一篇博客总结这次排错的经验教训: My Tips about how to handle complex and tricky issues https://blogs.sap.com/2014/05... 回到昨天我遇到的在AWS上出现的bug,根据问题的表象,一开始我和负责前端开发的同事,连这个问题出在前端还是后端都没办法判断。当微服务部署在本地并进行测试时一切正常,只有部署在AWS上进行集成测试时才会暴露,而运行在AWS上的nodejs应用,我昨天还不知道如何调试,因此只好采用我大二刚学C语言编程时用过的最笨的排查办法:打日志。 2001年,在结束了一年的计算机专业基础课学习后,Jerry开始了Unix环境下C语言编程的学习。当时我对gdb这种以命令提示行方式进行的调试风格很不适应,大多数时候的排错采用的还是在代码里添加printf语句打印变量内容的方式来进行,被寝室的同学鄙视了好久。 于是昨天我继续采用了这种自己18年前就曾经用过的排错方式: 1. 在可能引起bug的相关代码处逐一加上日志输出语句 2. 执行会出现bug的用户操作 3. 阅读AWS上生成的日志语句 上述三个步骤是一个不断迭代的过程。最开始我加了若干日志输出语句,执行操作后阅读生成的日志,发现没有任何异常。于是不断地增加新的日志打印代码,最后导致了执行一次操作,会生成1200行的日志输出。 我和负责前端开发的同事两人坐在显示器前,一行行检查这海量的日志输出。由于问题是用户第二次操作后才会暴露,每次操作会生成不同的会话,我们被迫不断的上下滑动屏幕来比较这两次会话的uuid和相关的WebSocket uuid等变量。Jerry很快发现,眼睛一眨不眨地盯着显示器逐条检查日志,时间一长眼睛就痛得受不了。无奈之下,只得把这些日志用打印机打印出来,用不同颜色的笔标注出两个会话对应的各种变量,在纸上来回比对。于是就有了下面这些纸张: 虽然最后用这种办法,成功排除了后台出错的可能性,使我们得以把精力花在前台代码的审查上,但是像我一个同事评价的,“这种方式太不环保了”,并且我自己也觉得,效率太低了。 后来好几位热心的同事告诉Jerry,就算运行在SAP Cloud Platform或者AWS这些云平台上的nodejs应用,也是可以单步调试的,Jerry Google了一下,发现远程调试确实很简单,就两条命令而已。 Jerry用我们创新空间团队另外一位同事Haytham开发并部署在AWS上的一个nodejs应用为例来尝试如何在我的本地电脑上对其进行调试。 Haytham虽然是一个大四本科生,但是已经在SAP成都研究院Jerry所在团队实习将近十个月的时间了,最近三个月一直在SAP德国总部参与一个项目的开发。 等Haytham回到成都后,会将自己这十个月的工作感悟,从一个SAP新人的视角给大家分享出来,敬请期待。 Haytham之前写过的文章: SAP成都研究院许聚龙:Hello, Coresystems! Haytham写的这个nodejs应用实际上是Github Webhook的一部分。我们在本地进行微服务nodejs开发,本地git客户端推送代码到远端github仓库。然后需要在AWS上手动git pull把最新的代码拉下来,再用一个开源工具pm2进行微服务部署。Haytham写的这个nodejs应用,能实现本地git推送完毕后一切后续流程的完全自动化,节省了我们大量的部署时间。 下面就来对Haytham这个运行在AWS上的nodejs应用进行远程调试。 1. 用node --inspect-brk在AWS上以调试模式启动应用。 之后控制台上的输出表明有一个nodejs进程以WebSocket协议在127.0.0.1:9229这个地址上监听调试客户端的连接。 2. 我在我的本地电脑上,用如下命令行将我本地电脑的端口9221映射到AWS调试进程监听的9229端口上: ssh -i C:Usersi042416.sshKOI.pem -L 9221:localhost:9229 ubuntu@ec2-us-east-2.compute.amazonaws.com 现在,本地电脑上Chrome浏览器地址栏chrome://inspect里指定监听地址为localhost:9221,  通过第二步建立的SSH tunnel, 我就可以用本地电脑连接到AWS上的nodejs应用并进行调试了。 现在终于可以在Chrome开发者工具里进行愉快的调试了: 因为我平时本地做nodejs开发和调试时,更喜欢用Visual Studio Code,所以下一步我准备试试用Visual Studio Code进行远程调试。 说到Visual Studio Code,Jerry突然想起今天在网上看到的一个关于这个IDE的有意思的扩展,名为"超越鼓励师"。 Jerry试着在自己的Visual Studio Code扩展安装栏里搜索了一下,这个扩展还真的可以下载。不过扩展里出现的"杨超越",Jerry又孤陋寡闻了,咨询了老婆后才知道她是谁。 至于实际效果如何,Jerry不做评价,欢迎Visual Studio Code爱好者自行下载体验。 ...

May 9, 2019 · 1 min · jiezi

如何在手机端查看PC端上的Vue项目二外网环境

在《如何在手机端查看PC端上的Vue项目(一)》这篇文章中介绍了如何在同一网络下通过配置Vue项目的host实现在手机端查看Vue项目,但是这种方法毕竟有局限性,如果是台式机就不行了,所以今天介绍一下如何实现手机通过外网也能访问PC端的Vue项目准备工作:如何在手机端查看PC端上的Vue项目(一) 介绍了如何查看本机IP及配置Vue文件花生壳官网 注册账号、下载客户端草料二维码官网 用于将网址转为二维码1、查看本机IP、修改Vue项目中的配置上面的参考文章中已经介绍了如何查看本机IP并配置Vue文件,这里就不在赘述2、注册花生壳、设置内网映射2.1、点击上方花生壳官网链接,并注册账号,下载客户端 2.2、客户端登录后打开如下图所示,点击右下角加号 2.3、选择内网映射 2.4填写配置信息,最后点击保存 应用名称:随意应用类型:因为我们一般都是访问的网页,所以选择HTTP80,你也卡哇伊选择通用外网域名:这是你注册账号后,花生壳免费给你的,因为免费,所以看起来比较乱,想要好记的,你懂,money~~~~往外端口:不用设置,也没法设置,默认80内网主机:就是你电脑的IP,同时你Vue中配置的host也得是这个内网端口:就是你Vue中配置的port,记得别和其他端口号冲突

May 2, 2019 · 1 min · jiezi

GDB 简介

GDB 是什么GDB 是 linux 环境下的一般功能强大的调试器,用来调试 C 或 C++ 写的程序。它可以做这些事情Start your program, specifying anything that might affect its behavior.Make your program stop on specified conditions.Examine what has happened, when your program has stopped.Change things in your program, so you can experiment with correcting the effects of one bug and go on to learn about another.安装以 centos 7 为例,安装 GDB-8.2.1 版本安装依赖C++ 11 编译器和 GUN make 是 GDB 必要的工具包,需先安装他们。yum install gcc*– 或者为了省事,直接把开发常用的工具包都安装了yum group install “Development Tools”– 查看是否安装成功gcc -v # 需 4.8 以上版本gun make 官网地址安装 GDB在官网上找到官方的 FTP 仓库,下载最新的版本,解压后开始安装./configure –prefix=/usr/local/gdb821make && make install安装完成将 /usr/local/gdb821/bin 添加到 PATH 环境变量– 也可以直接用 yum 安装yum install -y gdb安装需要花比较久时间,可以洗个澡干点爱干的事。gdb -v使用示例一个简单的示例,运行一个 PHP 脚本 gdb_test.php<?phpfor($i = 0; $i < 10; $i++){ if(in_array($i,[1,9,20])){ echo $i*$i,PHP_EOL; } }开始调试gdb php> run /usr/local/src/gdb_test.php这样脚本就执行成功了,实验了第一个命令。后续再详细学习断点,单步调试等真正的实验。附:GDB 常用命令backtrace:显示栈信息。简写为bt。frame x 切换到第x帧。其中x会在bt命令中显示,从0开始。0表示栈顶。简写为f。up/down x 往栈顶/栈底移动x帧。当不输入x时,默认为1。print x打印x的信息,x可以是变量,也可以是对象或者数组。简写为p。print */&x 打印x的内容/地址。call 调用函数。注意此命令需要一个正在运行的程序。set substitute-path from_path to_path,替换源码文件路径。当编译机与运行程序的机器代码路径不同时,需要使用该指令替换代码路径,否则你无法在gdb中看到源码。break x.cpp:n 在x.cpp的第n行设置断点,然后gdb会给出断点编号m。命令可简写为b。后面会对break命令进行更详细的解释。continue 继续运行程序。进入调试模式后,若你已经获取了你需要的信息或者需要程序继续运行时使用。可简写为cuntil 执行到当前循环完成。可简写为ustep 单步调试,步入当前函数。可简写为snext 单步调试,步过当前函数。可简写为nfinish 执行到当前函数返回set var x=10 改变当前变量x的值。也可以这样用:set {int}0x83040 = 10把内存地址0x83040的值强制转换为int并赋值为10info locals 打印当前栈帧的本地变量jump使当前执行的程序跳转到某一行,或者跳转到某个地址。由于只会使程序跳转而不会改变栈值,因此若跳出函数到另外的地方 会导致return出错。另外,熟悉汇编的人都知道,程序运行时,有一个寄存器用于保存当前代码所在的内存地址。所以,jump命令也就是改变了这个寄存器中的值。于是,你可以使用“set $pc”来更改跳转执行的地址。如: set $pc = 0x485return: 强制函数返回。可以指定返回值 ...

April 2, 2019 · 1 min · jiezi

移动端所有浏览器页面调试方法

通常在移动端页面调试时,除了移动端chrome和safiri,几乎对其他浏览器无法调试。在测试过程中,通常解决兼容性占了大部分时间,对那些手机厂商自带浏览器和第三方浏览器深恶痛绝,为什么不使用统一标准。spy-debugger 移动端浏览器调试工具页面调试、抓包工具。远程调试任何手机浏览器页面,任何手机移动端webview(如:微信,HybridApp等)。支持HTTP/HTTPS,无需USB连接设备。1.安装需要安装node,在这不做介绍了,然后安装 spy-debbugger 依赖包到全局环境。(这里使用了npm,yarn也不错)npm install spy-debugger -g2.PC端运行打开终端运行spy-debugger当出现下图所示即表示在PC端运行成功,记住IP和node-mitmproxy启动端口,后面需要使用,上图这个样子就成功启动了,浏览器打开 http://127.0.0.1:65443,后续调试的的功能都在这个页面上操作。3. 设置手机端HTTP代理首先电脑和手机保持在一个网络下,或连接同一个wifi。然后到手机端设置所连wifi的代理。进入wlan列表,长按或者点击最右的箭头(IOS是i符号),进入当前wifi详情页手机滑到最下面有个代理,点开选择为手动然后连接电脑端的代理,就下图中的 将第2步中的IP和端口分别填入主机名和端口4.手机端下载并安装证书(首次使用安装)手机端第三方浏览器输入 http://s.xxx (不要用自带浏览器和微信浏览器),下载证书到本地。安卓端安装证书的两种方式:其一:设置——WiFi——高级设置——安装证书其二:设置——更多设置——系统安全——从存储设备安装证书IOS端安装证书的方式看下面链接就行:https://www.jianshu.com/p/d31…5.用手机浏览器访问你要调试的页面即可下图就是用手机端浏览器打开页面,targets会显示监听到打开的页面。菜单栏的 Elements 、Resources、Network、Timeline、Console和chrome的开发工具项类似。体验肯定没PC端浏览器的好,但能够满足大部分调试的需求。

February 1, 2019 · 1 min · jiezi

windows下抓包工具whistle的安装与使用

一、简介whistle是一款基于Node的跨平台web调试代理工具。主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可作为HTTP代理服务器使用。在调试移动端项目时,我们无法像在Chrome开发工具下那样看到请求、日志、DOM结构等。当然,使用vConsole可以解决以上问题,不可否认vConsole能满足移动端调试的大多数场景,并且十分便利。但是vConsole必须要作为一款插件注入项目代码中,这就有了局限性。whistle相比之下就没有限制。whistle的功能十分强大,本文只介绍安装入门。二、安装安装Node。(不再介绍)安装whistle。npm install -g whistle启动whistle w2 start配置代理 推荐安装Chrome代理插件SwitchyOmega。 第一种安装方式是通过FQ。 第二种安装方式是安装谷歌访问助手,有了谷歌访问助手便可以在谷歌商店下载软件以及使用google搜索引擎。安装完成SwitchyOmega之后,配置代理。官网介绍非常详细。 移动端调试时,移动设备要与PC在同一WiFi下,并且要给移动设备网络配置代理,代理服务器是PC的IP地址,端口号为PC上代理服务器配置的端口号访问 配置页面 域名访问http://local.whistlejs.com/,或者IP+端口访http://127.0.0.1:8899/HTTPS证书安装 首先是windows下安装根证书,然后移动设备(以ios为例)在代理网络环境下,Safari地址栏输入rootca.pro,安装完成之后需要手动信任根证书。设置-通用-关于本机-证书信任设置下设置信任根证书。 在 配置页面 导航栏的HTTPS选项中,勾选Capture HTTPS CONNECTs,即可抓取HTTPS请求。然后在移动设备访问页面时,即可在 配置页面 的Network中看到请求。PS:本文只是对安装入门做了粗略总结,对部分注意细节进行阐述。关于whistle更详细介绍、更多的功能请移步官网。

January 30, 2019 · 1 min · jiezi

Eruda 一个可能被人遗忘的调试神器

引言 日常工作中再牛逼的大佬都不敢说自己的代码是完全没有问题的,既然有问题,那就也就有调试,说到调试工具,大家可能对于fiddler、Charles、chrome devtools、Firebug、还有Safari远程调试等比较熟悉,甚至有些是我可能也没有用过的; 这里喷一句吧,谁都别给我提IE啊,IE那个不叫调试工具,那叫坑爹神器,话说最近不是又甩锅了,把自己的革命老根据地都甩了。 俗话说预先善其事必先利其器,今天想给大家分享的是一个可能被人们忽略的小工具,为什么说被人们忽略呢?因为发现github上它才4.6k Star、457 Fork、Watch 173次,也就是说千万开发者中知道它的人可能不超过5w,于是决定分享一波,此文重在引导,希望能帮大家开发中带来一点点便利、效率的提升:这里是IT平头哥联盟,我是首席填坑官—苏南,用心分享 做有温度的攻城狮。公众号:honeyBadger8,群:912594095。Eruda是什么? Eruda是什么?Eruda 是一个专为前端移动端、移动端设计的调试面板,类似Chrome DevTools 的迷你版(没有chrome强大 这个是可以肯定的),其主要功能包括:捕获 console 日志、检查元素状态、显示性能指标、捕获XHR请求、显示本地存储和 Cookie 信息、浏览器特性检测等等。 虽说日常的移动端开发时,一般都是在用Chrome DevTools浏览器的移动端模式模拟各种手机型号来进行开发和调试,确保功能/页面展示等都没有问题了,才会提交测试; 但是前面都讲了,只是模拟、模拟,当下手机品牌可算是千千万,手机中各种类浏览器,甚至APP都有自己不一样的特色 腰间盘突出,有的还特别突出,有病我们得给它治啊,不然测试、产品、需求、领导都不会放过我们,比如下图场景。如何使用?它支持npm方式的,这个是不是很开心??外链,没错,就是外链的形式引入,对于它,我觉得npm的方式没有什么太大意义,直接以外链的引入更方便,也能减少项目资源包的大小,更便于控制是否要加载这个资源。方式一,默认引入:<script src="//cdn.jsdelivr.net/npm/eruda"></script><script>eruda.init();</script>方式二,动态加载:DEBUG && loadJS(‘http://cdn.jsdelivr.net/eruda/1.0.5/eruda.min.js', ()=>{ eruda.init();});//苏南的专栏 交流:912594095、公众号:honeyBadger8方式三 ,指定场景加载://比如线上 给自己留一个后门,//我们一般的做法是喜欢给某个不起眼的元素,添加一个点击事件,要点它十次、八次以后才开启 debug 模式;;(function () { var src = ‘http://cdn.jsdelivr.net/eruda/1.0.5/eruda.min.js'; if (!/eruda=true/.test(window.location) && localStorage.getItem(‘active-eruda’) != ’true’) return; document.write(’<scr’ + ‘ipt src="’ + src + ‘"></scr’ + ‘ipt>’); document.write(’<scr’ + ‘ipt>eruda.init();</scr’ + ‘ipt>’);})();方式四 ,npm: npm install eruda –save…… 加载的方式很多小而美这里小,不是指它的包小啊,知道它的同学都知道,其实它的包并不小(约100kb gzip);100kb不小了,用形容妹子的话来说就是:丰满,直接说它胖,你就死定了;这里的小而美是指小巧功能也强大,界面也好看;说了这么多 来看看它到底长啥样吧:功能清单consoleconsole 的作用就不用废话了,大家都懂;早期在console诞生之前,我们的调试功能都是alert过多,包括现在的移动端,在手机上我们想看到参数值、数据、节点等都以alert打印为多数,但过于粗暴、而且一不小心有可能带到线上去了;eruda 能帮我们解决这个问题;所有的日志、错误都能帮我们捕获到甚至我们还能像chrome,直接在控制台执行js代码;Elementseruda 它没有在PC端这么直观,但也因为在移动端展示的方式局限性,它能把每一个父节点下的每一个子节点全部列出来;你点击某个子节点时,列出当前节点全部的属性、样式、盒子模型等;查看标签内容及属性;查看Dom上的样式;支持页面元素高亮;支持屏幕直接点击选取;查看Dom上绑定的各类事件。甚至也能使用Plugins 插件,做到跟PC端一样,形成 dom tree;Network现在的项目大多都是前后端分享的形式了,前端处理的业务越来越多、各种请求资源等;干的越多承担责任也越多、锅也越多,又大又平的那种哦~所以 Network 的必要性不言而喻,它能捕获请求,查看发送数据、返回头、返回内容等信息,它对于我们平时前后端联调出现的问题定位是有很大帮助的,比如:后端说你请求参数少了,前端你看了代码逻辑没有问题,但在手机上就是调不通,Network 能很直接明了的看到你请求带了什么。Resources它跟 Chrome Devtools 里的 Application + Source,两者的结合体;Resources 它能查看 Cookie、localStorage、sessionStorage等信息,并且还能执行清除操作(Application);它还查看当前页面加载脚本及样式文件;查看页面加载过的图片等资源(Source);好吧,感觉说的再多,也不如上图直接:Sources/InfoSources:查看页面源码;格式化html,css,js代码及json数据。Info:主要输出URL信息及User Agent;及其他的一些手机系统信息,同时也支持自定义输出内容哦。高阶用法以上刚才介绍的是它的一些基本的功能,也是我自己在工作中用的较多的;最近发现新版本功能要强大不少,之前一直用的1.0.5,好像是没有插件这一项的;大概看了一下,都蛮强大,包括上面的Dom tree,插件这部分并没有都实际应用过,所以也就不打肿脸充胖子了,有兴趣的同学可以自己看看。如果觉得已经的插件都满足不了你的需求,它还支持自定义插件自己编写。结尾: 以上就是今天给大家带来的分享,工作中用了蛮久,挺方便的,对于定位移动端的疑难杂症问题、甚至留下后门定位线上问题都有很大帮助,如文中有理解不到位之处,欢迎留言指出。 线上问题我们一般的做法是喜欢给某个不起眼的元素,添加一个点击事件,要点它十次、八次以后才开启 debug 模式; 上面二维码确实是真实的官方Demo,不用担心有套路,也有链接:https://eruda.liriliri.io/Github 地址:https://github.com/liriliri/eruda其他vue/react/java/大厂面试题等资源免费获取 大家好 这就是2018年的我~月入三万 还能少了你一个鸡蛋如何给localStorage设置一个有效期?作者:苏南 - 首席填坑官链接:http://susouth.com/交流:912594095、公众号:honeyBadger8本文原创,著作权归作者所有。商业转载请联系@IT·平头哥联盟获得授权,非商业转载请注明原链接及出处。 ...

December 24, 2018 · 1 min · jiezi