SDK API

更新时间:
复制 MD 格式

本文介绍各插件配置项说明、注意事项等。

SDK初始化

SDK初始化配置项说明

字段

类型

默认值

是否必填

说明

appKey

string

无

是

EMAS控制台申请应用后分配的appKey

appSecret

string

无

是

EMAS控制台申请应用后分配的appSecret

appVersion

string

无

否

当前应用的版本号 非必填

channel

string

无

否

当前应用渠道号

userNick

string

无

否

用户昵称

userId

string

无

否

用户id

loggerLevel

string

无

否

日志级别 'debug': debug级别 不填写则默认线上模式

示例

// SDK 初始化
var apm = new window.EMAS.APM({
  appKey: 'appKey', // EMAS 控制台创建应用后分配
  appSecret: 'appSecret', // EMAS 控制台创建应用后分配
  appVersion: 'appVersion', // 应用版本号
  channel: 'channel', // 应用渠道号
  userNick: 'userNick', // 用户昵称
  userId: 'userId', // 用户id
});

插件配置

插件配置项说明

插件名

字段

类型

默认值

是否必填

说明

pv

autoPV

boolean

true

否

是否自动发送PV数据,打开后会在SDK启动时自动进行一次上报。

enableHistory

boolean

false

否

用于History Router的单页面应用,当开启后页面切换时会自动上报PV。需要开启autoPv,配合使用。

enableHash

boolean

false

否

用于Hash Router的单页面应用,当开启后页面切换时会自动上报PV。需要开启autoPv,配合使用。

jsError

disable

boolean

false

否

jsError插件开关

disableError

boolean

false

否

是否关闭error类型的错误检测

disableUnhandledRejection

boolean

false

否

是否关闭unhandledRejection类型的错误检测

ignoreList

(string|RegExp|function)[]

[]

否

与error.message匹配,忽略能匹配的JS错误

request

disable

boolean

false

否

request插件开关

disableFetch

boolean

false

否

是否忽略Fetch类型的错误

disableXHR

boolean

false

否

是否忽略XHR类型的请求

ignoreList

(string|RegExp|function)[]

[]

否

与requestUri匹配,忽略能匹配的请求

resource

disable

boolean

false

否

resource插件开关

ignoreList

(string|RegExp|function)[]

[]

否

与requestUri匹配,忽略能匹配的请求

whiteScreen

disable

boolean

false

否

白屏插件开关

when

string[]

["timeout", "visibilitychange", "error", "unhandledrejection", "load"]

否

进行白屏检测的时机,默认包括所有支持的时机

rootSelector

string

null

否

自定义白屏检测根节点,支持 CSS 选择器格式

  • #id - id 选择器

  • .className - class 选择器

ignoreSelectors

string[]

[]

否

忽略元素列表,匹配的元素及其子元素不参与白屏计算

  • #id - id 选择器

  • .className - class 选择器

  • [attribute] - 属性选择器

timeout

number

3000

否

当when包括timeout时,对应触发检测的倒计时时间

performance

disable

boolean

false

否

性能插件开关

disableCLS

boolean

false

否

是否开启cls指标检测

disableLCP

boolean

false

否

是否开启lcp指标检测

disableINP

boolean

false

否

是否开启inp指标检测

disableFCP

boolean

false

否

是否开启fcp指标检测

disableFP

boolean

false

否

是否开启fp指标检测

disableTTFB

boolean

false

否

是否开启ttfb指标检测

disableNavigationTiming

boolean

false

否

是否开启navigationTiming指标检测

SDK启动

/**
* 启动SDK
* @method start
* @params {{ [key: string]: Record<string, string> }} config 插件配置项
* @returns {object} 返回各插件实例对象,用于调用插件实例对象API
*/
start(config?: { [key: string]: Record<string, any> } ) : object

示例

const apm = new window.EMAS.APM({
  appKey: 'appKey', // EMAS 控制台创建应用后分配
  appSecret: 'appSecret', // EMAS 控制台创建应用后分配
});
const plugins = apm.start({
  pv: {
    autoPv: true,
    enableHistory: true,
  },
  request: {
    disableXHR: true,
    ignoreList: ['https://xxx.xx.xx'],
  },
});

// 获取插件实例
const pv_plugin = plugins.pv;

手动上报PV数据

当自动上报PV不满足的情况下,可以使用手动上报模式

/**
*  手动发送PV埋点
*/
sendPV(): void;

示例

const apm = new window.EMAS.APM({
  appKey: 'appKey', // EMAS 控制台创建应用后分配
  appSecret: 'appSecret', // EMAS 控制台创建应用后分配
});
const plugins = apm.start({
  pv: {
    autoPv: false,
  },
});

// 手动上报PV
plugins.pv.sendPV();

白屏

白屏得分:

参考业界普遍定义,计算DOM深度得分判断是否白屏。通过遍历页面DOM树上的节点,每遇到一个可视元素,根据深度计算白屏得分:,所有可视元素得分总和得到页面白屏得分。

白屏得分越低越可能白屏,默认DOM得分少于1.5为极有可能白屏,进行上报。