此页面需要javascript支持,请在浏览器中启用javascript

sentry前端监控 工具类(1)

utils
browser
sentry
阅读 

梳理一下

前面几天,我们已知hub是一个全局的 stack ,里面带作用域和对应平台的client实例

在初始化的时候,将构造方法传入,监控时在不同平台使用不同的适配罢了

而很多针对不同 framework 的包,也不过是针对这些框架的 钩子,或者自带的错误处理进行收集

今天来看个轻松的工具类

@sentry/utils 里文件很多大体如下

  • async : forget 打印错误并且resolve
  • browser : htmlTreeAsString 看名字也知道
  • dsn : 处理监控 endpoint 的,传入的一个url会被解构
  • error : 自定义 SentryError 错误的,有意思的是,git记录上显示写的人 叫 木土羽

有看不懂的点,贴一下 error

import { setPrototypeOf } from './polyfill';

/** An error emitted by Sentry SDKs and related utilities. */
export class SentryError extends Error {
  /** Display name of this error instance. */
  public name: string;

  public constructor(public message: string) {
    super(message);
    //下面的new.啥看不懂,方言还是语法糖??
    this.name = new.target.prototype.constructor.name;
    setPrototypeOf(this, new.target.prototype);
  }
}
  • index : 没啥说的
  • instrument : 大量的劫持,很值得说,会单独写
  • is : 一些判断方法,也值得一说
  • logger : 自定义的 Logger,挂在全局 __SENTRY__
  • Memo : 光看名字是看不懂的,进去一看。

Memo class used for decycle json objects. decycle是归队的意思?

  • misc : 也值得讲一讲
  • node : node相关的判断和提取信息
  • object : fill 方法也值得好好讲讲
  • path : 自己实现了基本方法
  • polyfill : 垫片
  • promisebuffer : 一个promiselike的泛型数组
  • stacktrace : 拿方法名字,没有就 <anonymous>
  • string : 处理字符串
  • supports : 判断环境是否支持,写法也很有趣 try/catch + new
  • syncpromise : 同步的promise?sentry自己实现了一套 A+ 方案,值得一看并和 bluebird 进行比较

我猜他自己实现一套,主要还是怕全局的印象到吧,毕竟一个环境全局的promise可以随便劫持

  • time : 时间处理主要就是 perf_hooks performance Date

列举了很多值得细看的,下一篇文章会一个一个function去看,去理解

© 2021 icebreaker 苏ICP备19002675号-2
version:1.2.2