整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

两款开源免费的手机网页前端开发者调试面板-eruda+vConsole

eruda和vConsole是两个针对手机网页的前端开发者调试面板。让移动端网页开发调试变得更加简便,前端开发者都知道在PC端浏览器调试非常方便,可以随时查看调试信息等,而移动端就没这么方便了。因此eruda和vConsole也就孕育而生!eruda和vConsole是两个不同的产品,本文分别来介绍它们!



Github

https://github.com/liriliri/eruda

https://github.com/Tencent/vConsole

eruda简介和使用

Eruda 是一个专为手机网页前端设计的调试面板,类似 DevTools 的迷你版,其主要功能包括:捕获 console 日志、检查元素状态、捕获XHR请求、显示本地存储和 Cookie 信息等等。

  • 功能介绍


  1. 按钮拖拽,面板透明度大小设置。
  2. Console面板:捕获Console日志,支持log、error、info、warn、dir、time/timeEnd、clear、count、assert、table;支持占位符,包括%c自定义样式输出;支持按日志类型及正则表达式过滤;支持快捷命令加载underscore、jQuery库;支持JavaScript脚本执行。
  3. Elements面板:查看标签内容及属性;查看应用在Dom上的样式;支持页面元素高亮;支持屏幕直接点击选取;查看Dom上绑定的各类事件。
  4. Network面板:捕获请求,查看发送数据、返回头、返回内容等信息。
  5. Resources面板:查看并清除localStorage、sessionStorage及cookie;查看页面加载脚本及样式文件;查看页面加载图片。
  6. Sources面板:查看页面源码;格式化html,css,js代码及json数据。
  7. Info面板:输出URL及User Agent;支持自定义输出内容。
  8. Snippets面板:页面元素添加边框;加时间戳刷新页面;支持自定义代码片段。

  • 快速上手

通过CDN使用或者通过npm安装:

npm install eruda --save

在页面中加载脚本:

<script src="node_modules/eruda/eruda.min.js"></script>
<script>eruda.init();</script>

Js文件对于移动端来说略重(gzip后大概100kb)。建议通过url参数来控制是否加载调试器,比如:

;(function () {
 var src = 'node_modules/eruda/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>');
})();

初始化时可以传入配置:

  • container: 用于插件初始化的Dom元素,如果不设置,默认创建div作为容器直接置于html根结点下面。
  • tool:指定要初始化哪些面板,默认加载所有。
let el = document.createElement('div');
document.body.appendChild(el);
eruda.init({
 container: el,
 tool: ['console', 'elements'],
 useShadowDom: true
});

插件

  • eruda-fps:展示页面的 fps 信息。
  • eruda-features:浏览器特性检测。
  • eruda-timing:展示性能资源数据。
  • eruda-memory:展示页面内存信息。
  • eruda-code:运行 JavaScript 代码。
  • eruda-benchmark:运行 JavaScript 性能测试。
  • eruda-geolocation:测试地理位置接口。
  • eruda-dom:浏览 dom 树。
  • eruda-orientation:测试重力感应接口。

如果你想要自己编写插件,可以查看Github提供的教程


vConsole

vConsole是由腾讯出品的一个轻量、可拓展、针对手机网页的前端开发者调试面板。



特性:

  • 查看 console 日志
  • 查看网络请求
  • 查看页面 element 结构
  • 查看 Cookies、localStorage 和 SessionStorage
  • 手动执行 JS 命令行
  • 自定义插件

安装使用:

使用 npm 安装:

npm install vconsole

引入 dist/vconsole.min.js 到项目中:

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

对于 TypeScript,可引入 d.ts 文件:

import 'path/to/vconsole.min.d.ts';

PS:你还可以编写自己的插件,具体的详细文档可查阅Github


总结

eruda和vConsole都是移动浏览器端网页调试的调试利器,更加方便准确的调试移动端,尤其是在APP内置的webView上加载我们的页面,想要查看手机浏览器信息是非常不容易的一件事情,有了它们,这些问题都将不复存在,有需要的朋友不要错过,Enjoy it!

知道早期的开发中,前后端是不分离的吗?那么后来它们又为什么要“分家”呢?分离后又有什么好处呢?

在前面一篇文章中,产品汪搞懂了前后端的工作分工。但是了解过程中,一个程序猿哥哥不经意间的一句话:“现在都是前后端分离的”,让小汪感到纳闷了,以前难道前后端不分离的么?于是小汪就继续深究起来。

不温馨的一家人

在十几年前,前端的地位其实相对于后端并不那么强势,以下是一种经典的编程框架。

MVC:Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码。

有意思的事情出现了,内容是传给用户的,前端并不是直接接触用户的!前端只是提供了个样式模板,由后端把内容嵌入进入,再由后端直接传给用户。

这个时候,前端的编程要各种顺着后端哥哥的心意,而且前端要是出bug了,还得拉上后端一起研究,谁让你往我的模板里插了内容,出了幺蛾子你就得负责到底。

这个时期前后端高度耦合,从编程环境、到开发调试,都必须“在一起”,对于前端来说,其实自主权就不高,对后端来说,也要懂一些前端的知识。

于是前端程序猿对后端程序猿说,要不……你只管你的业务和数据,把结果给我,我来负责组装与呈现,这样大家都轻松些。于是前后端就分离了。

当初是你要分开,分开就分开

前后端分离带来的好处:

(1)编程更轻松

前后端分离之后,后端更专注于实现业务逻辑,形成一套标准化的“API接口”,例如需要创建商品,前端将商品信息传给后端创建商品的接口,后端就会完成商品的创建,并返回创建结果。如果前端给的创建商品信息缺了标题或者价格,后端还能返回创建失败的结果,并且提示缺失了哪些信息等。

前端除了负责界面样式和交互,还接管了获取和展示数据的权利,从此前端开发就自由多了,如果遇上bug,也能很轻松定位到是前端还是后台的事情。

(2)更高的可复用性

前后端分离,更是顺应了互联网发展多样化的潮流。后端通过提供一系列可以实现不同业务功能的接口,就可以让不同的前端、甚至外部系统过来对接。

这样方便了公司不断推广自己的产品,今天推出手机网页版、明天推出APP版、后天推出小程序版本等。而后端只需要提供一次接口,无需每增加一类客户端,后端就要新写过。

用户访问网站的过程小知识:

  1. 浏览器先下载HTML的内容
  2. 根据HTML里的内容,下载并加载对应的CSS,让网页漂亮起来
  3. 根据HTML里的内容,下载并加载对应的JavaScript,让网站具备交互动效,其中部分JavaScript代码负责向服务器上的后端请求数据,并展示在页面上。

但是久而久之,前后端分离在web网页上也遇到了一些问题,最明显的是以下两点:

  1. JavaScript的请求在用户浏览器中进行,当一个网站需要展示非常多的内容时,JavaScript就要向后台多个接口请求数据,然后再在用户浏览器上完成页面组装,这过程中就会给用户设备的网速、设备的运行速度(CPU、内存等)带来一定的压力。
  2. 搜索引擎,如百度、搜狗、谷歌等,想爬取网页的内容时,就会用到爬虫。爬虫会抓取网页HTML里面的内容,然后让其他网友可以搜索到你的网页。但是此时,HTML文件就是个框架,要依靠JavaScript才能获取到数据。这就会导致你的网页难以被搜索引擎收录,用户很可能搜不到你的网页。

前后端分离为用户设备带来的影响,可以通过“换台新手机”、“换台新电脑”解决,但是搜索引擎爬不到网页的数据,对很多重度依赖搜索引擎流量的产品来讲,打击可就大了。

例如你需要找一个菜谱的时候,可能会在百度搜索“芥蓝怎么炒好吃?”,然后再从搜索结果里面访问各种美食网站。又或者你想去哪里玩,就会在百度搜索“土耳其旅游攻略”等等。对于这类重搜索引擎流量的网站而言,如果爬虫爬不到自己的数据,客流损失就比较严重。

运行在后面的前端

考虑到上诉问题,聪明的网页前端程序猿就想到了一个新的办法,那我们先把后台的数据跟HTML内容整合好,再呈现给用户吧,得力于一种叫做Node.JS的、可以使用网页前端熟悉的JavaScript编程的工具,于是有了2.0版本的前后端分离。

前端程序猿跟服务器上的后端说,让一让,给我腾个地儿,然后把Node.JS放在了服务器上。等用户或者爬虫需要访问网页时,这个运行在服务器上的程序,先请求后端获得数据,并整合到HTML中,然后再返回给用户。

这样一来,用户的设备就少了JavaScript多次请求后端的烦恼,加快了运行速度,而爬虫也可以爬取到填充好内容的HTML网页了。

看到这里,小汪就想,这么一来,用户体验、爬虫的问题确实解决了,但是让本来本该发生在用户浏览器上的事情,都在服务器上做了嘛,如果访问量大的话,咱服务器的压力不就很大了?

前端程序猿哥哥呵呵一笑,其实不然,你想想,很多用户都是在访问同一个网页,看同一个商品、读同一篇文章,这些请求,要是服务器的前端就请求后台一次,然后把整合好的HTML保存起来,下次再有人再来访问,就把这个生成好的HTML展示给用户,这样不就服务器轻松了、用户访问也快了么!

小汪又问了,那咋们页面多了,不就要每个页面都保存一份HTML文件么,服务器储存的空间不就越来越少了么?

前端程序猿哥哥继续答道:久而久之,HTML文件在服务器积累多了,就把好久都没人访问的HTML删了,给其他新保存的HTML文件让位置,通过“缓存”技术,让服务器永葆活力。

小汪恍然大悟,原来这就是缓存啊!这下子,小汪终于明白了前后端分离是什么回事,以及为什么要前后端分离。

现在随着很多大型产品的形成、独立运行,新的“信息孤岛”正在形成。例如微信的公众号-小程序-朋友圈-圈子,然后通过搜一搜进行统一搜索,内部造血,而不再依赖传统的搜索引擎为他引流。

又例如淘宝,很多年前就拒绝了让百度爬虫爬取他的商品信息,只允许在淘宝内进行搜索。你在百度上搜不到淘宝的商品,在微信上也找不淘宝的任何信息、无法访问淘宝任何的链接,如果你要淘宝购物,就只能去淘宝网站或者下载淘宝APP。新的互联网格局的形成,肯定会进一步影响着前后端的关系。

本文由 @iCheer 原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。

坤 发自 凹非寺

量子位 报道 | 公众号 QbitAI

“你有苹果充电线吗?”“我用的是安卓。”充电器不一样,实在是不方便。

现在,欧洲要实现充电接口的统一了。

欧盟一项最新提案要求电子行业统一使用USB-C作为充电设备标准。目的是为了减少电子垃圾,给消费者带来更方便的使用体验。

欧盟委员会提出,USB-C将成为所有智能手机、平板电脑、相机、耳机、蓝牙音箱和游戏掌机的标准端口。

无论在家还是出门,都只需要一个充电器,简直不能更方便。

充电器统一标准的具体内容如下:

将USB-C作为充电器唯一接口类型。其他接口如Lightning等,将不被允许出现在欧洲市场上。

统一快速充电技术,确保充电速度相同。各商家的充电器参数需调整到统一水平,允许不同设备兼容。

充电器与电子设备分开销售,消费者自由选择是否需要购买充电器。

厂商必须明确提供电子设备的充电参数,由消费者决定是否需要更新充电器。

也就是说,欧盟不仅要让充电接口统一,快充标准也得统一。

圈地自萌的市场现状

来看看手机市场充电接口的现状:目前已经是苹果Lightning与安卓Type-C二分天下,相比濒临淘汰、只能单面插入的micro-USB接口,这两种类型使用起来更安全,不易损坏接头。

而可适配USB 3.0的Type-C端口,在传输速度和功率方面,也要比USB 2.0时代的Lightning接口强大得多。

安卓宇宙的参差

安卓和苹果充电器不兼容,那插口类型相同的各品牌安卓充电器,能不能通用呢?

虽然都叫Type-C,但也是有功率大小之分的。各家手机厂商都发展了自己的独特快充技术,50W以上快充功率比比皆是。

小米达到了50W功率,至尊纪念版则一路飙升到120W,Vivo、OPPO也分别实现了120W、125W快充技术。只要充电头和电子设备的芯片互相支持,协议达成就可以实现快充。

那么不同快充功率的充电器可以混用吗?可以,但没必要。无法匹配的设备,快充技术将无法体现出价值。

现在,欧盟不光要统一接口类型为Type-C,还要求统一快充标准,大家都是充电器,还分什么高低贵贱。

这种政策当然是消费者最喜闻乐见的,不仅不用再为满满一抽屉的杂乱数据线头疼,还不用再去买第二个充电器了。

但是故事的主角——各大电子厂商才不会乖乖照做。

为什么各家厂商都不愿统一

厂商为什么不会配合?还不是赚不了这部分利润了。

安卓内部各自开发快充技术,就是为了做到隐形捆绑销售。既然都要买配件,为什么不能是买自己家的?为了让“原装”更有分量,只能在充电速率技术壁垒上下点功夫了。

虽然在十年前欧盟的倡议下,行业内达成了一致,充电器类型从30个减少到3个,但大家还是得各自把技术壁垒建立起来。

技术壁垒建在哪?接口上加个独家认证还不是分分钟的事。

而苹果与欧盟通用充电器标准的拉锯战也已经持续了十多年,欧盟这次的提案,直接将事态带入到了白热化阶段。

在欧盟倡议使用统一micro-USB标准阶段,苹果依然自顾自开发出了Lightning接口,并以附赠micro-Lightning转接头的方式无视了这一规定。

随后,欧盟再次将统一充电标准提上日程,去年进行了欧洲议会投票,以582 : 40的票数通过决议。

苹果立刻发表声明,称欧盟这项举动会“扼杀创新”。并委托哥本哈根经济学专家做出“充电器改革一点都不环保”的研究结论。

为了证明保留Lightning也可以环保,苹果从iPhone 12开始,手机与充电器分开销售,声称这一措施节约了861,000 吨金属资源。但是由于苹果的独家芯片,消费者还得花高价买。

但是Lightning不支持更高传输速率和更高充电功率。

苹果只能在最新Mac笔记本和iPad中使用USB-C接口,但是iPhone产品却依然坚持Lightning接口。

对于广受质疑的“欧盟立法是在针对苹果”问题,欧盟行业负责人表明:“我们不是在针对苹果,我们没有在针对任何人。”

同时,欧盟也表示:“这项提案考虑的情况是,未来苹果已经在其他设备上实现了USB-C兼容。”

至于苹果接下来会怎么做,还挺让人期待的。

参考链接:
https://www.engadget.com/europe-proposes-usb-c-as-a-common-charger-for-electronic-devices-131605815.html

https://ec.europa.eu/commission/presscorner/detail/en/ip_21_4613
https://www.engadget.com/2020-01-23-apple-rejects-eu-call-for-common-phone-charger.html
https://www.bbc.com/news/technology-58665809

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态