You need to enable JavaScript to run this app.
导航

从旧版迁移

最近更新时间2022.09.02 17:44:34

首次发布时间2022.03.18 16:26:18

新版 SDK 重新设计的时候只考虑了功能包含,且旧版 SDK 由于历史原因配置结构不合理,因此新版 SDK 只能尽力保证配置和API 兼容,即使如此,从旧版迁移依然有一定工作量,且并非所有配置和API都能一一对应。

注意事项

  • 旧预收集脚本收集的是引用,数据有变动的风险,新预收集脚本会预先处理预收集的数据,同时为了支持多实例,script脚本内部补充了bid和gobalName。
  • 新脚本可在接入SDK中查看。

配置迁移

旧版参数名新版参数名备注
app_idaid
user_unique_iduserId
pidpid
context-改为独立的 Client.context 对象
serverDomaindomain新版sdk内置了与旧版本不同的默认域名,迁移时建议删除
ignoreAjaxplugins.ajax.ignoreUrls / plugins.fetch.ignoreUrls
ajaxWhitelistUrls-暂未支持,按需支持
ignoreStaticplugins.resourceError.ignoreUrls
ignoreErrorsplugins.jsError.ignoreErrors
hookPath-plugins.pageview.routeMode 控制,'manual' 时关闭 路由监听
hookXHR-plugins.ajaxfalse 可关闭
hookFetch-plugins.fetchfalse 可关闭
enableFMP-plugins.fmpfalse 可关闭
enableCatchJSError-plugins.jsErrorfalse 可关闭
enablePerformance-plugins.performancefalse 可关闭
enableResourcePerformance-plugins.resourcefalse 可关闭
enableStaticError-plugins.resourceErrorfalse 可关闭
enableBreadcrumb-plugins.breadcrumbfalse 可关闭

API 迁移

初始化

旧版 SDK 会在第一次调用 config 后开始上报,新版SDK 会在调用 start 后开始上报,start 只会生效一次。

旧版

同步配置

Client('config', configOptions)

新版

同步配置

Client('init', initOptions)
Client('start')

异步配置

Client('init', initOptions)

doSomething().then(() => {
  // 更新配置
  Client('config', configOptions)
  // 启动
  Client('start')
})

自定义上报

旧版

// 自定义计数
Client('emit', 'counter', {
  name: 'login_count',
  value: 1,
  tags: {
    where: 'login_page',
  },
})

// 自定义计时
Client('emit', 'timer', {
  name: 'login_api_duration',
  value: 1000,
  tags: {
    where: 'login_page',
  },
})

// 自定义指标
Client('emit', 'custom', {
  event_name: 'login_event_metrics',
  metrics: {
    server_timing: 3456,
    login_level: 23,
  },
  tags: {
    where: 'login_page',
  },
})

// 自定义日志
Client('emit', 'log', {
  value: `user loggedin from ${prev}`,
  level: 'info',
  tags: {
    where: 'login_page',
  },
})

新版

// 自定义事件
Client('sendEvent', {
  name: 'login_event',
  metrics: {
    login_count: 1,
    login_api_duration: 1000,
    server_timing: 3456,
    login_level: 23,
  },
  categories: {
    where: 'login_page',
  },
})

// 自定义日志
Client('sendLog', {
  level: 'error',
  content: `user loggedin from ${prev}`,
  extra: {
    where: 'login_page',
  },
})

自定义维度

旧版

// 通过 config 设置,对象合并
Client('config', {
  context: {
    where: 'here',
  },
})
// 清除 context
Client('config', {
  context: null,
})
// 通过 ContextAgent 设置
Client('context', (c) => {
  console.log(Object.keys(c)) // => ["set", "delete", "clear", "get", "toObject"]
})

新版

// 命令参数使用 ContextAgent, 如果是初始化的时候设置context,则需要使用这种方式,在init之前调用
Client('context.set', 'where', 'here')
Client('context.merge', { key: 'value' })  // 将context 和 传入的对象合并,生成新的context
Client('context.delete', 'key')  // 删除context中的某个key
Client('context.clear') // 清空context

// 或者直接使用 ContextAgent (需要确保主包已经加载,一般可以通过 `Client('on', 'init', () => { })` 判断)
Client('on', 'init', () => {
  Client.context.set('where', 'here')
})