新版 SDK 重新设计的时候只考虑了功能包含,且旧版 SDK 由于历史原因配置结构不合理,因此新版 SDK 只能尽力保证配置和API 兼容,即使如此,从旧版迁移依然有一定工作量,且并非所有配置和API都能一一对应。
旧版参数名 | 新版参数名 | 备注 |
---|---|---|
app_id | aid | |
user_unique_id | userId | |
pid | pid | |
context | - | 改为独立的 Client.context 对象 |
serverDomain | domain | 新版sdk内置了与旧版本不同的默认域名,迁移时建议删除 |
ignoreAjax | plugins.ajax.ignoreUrls / plugins.fetch.ignoreUrls | |
ajaxWhitelistUrls | - | 暂未支持,按需支持 |
ignoreStatic | plugins.resourceError.ignoreUrls | |
ignoreErrors | plugins.jsError.ignoreErrors | |
hookPath | - | 由 plugins.pageview.routeMode 控制,'manual' 时关闭 路由监听 |
hookXHR | - | plugins.ajax 为 false 可关闭 |
hookFetch | - | plugins.fetch 为 false 可关闭 |
enableFMP | - | plugins.fmp 为 false 可关闭 |
enableCatchJSError | - | plugins.jsError 为 false 可关闭 |
enablePerformance | - | plugins.performance 为 false 可关闭 |
enableResourcePerformance | - | plugins.resource 为 false 可关闭 |
enableStaticError | - | plugins.resourceError 为 false 可关闭 |
enableBreadcrumb | - | plugins.breadcrumb 为 false 可关闭 |
旧版 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') })