作为序言,我意识到这是一个非常高级的问题,但我正在寻找有关如何最好地构建解决方案而不是如何实现它的输入。
到目前为止,我所拥有的如下:
- 由于我们使用多个跟踪供应商,每个供应商的跟踪代码都包装在一个标准化跟踪方法的对象中。这个想法是,无论使用哪个跟踪供应商,都始终可以调用某些方法,从而使供应商基本上可以互换。
- 每个供应商包装器都接受一个跟踪规则对象,该对象提供有关跟踪内容和时间的说明。例如,跟踪规则对象包括在适当时间执行的 onDOMReady、onFormSubmit 和 onDOMChange 方法。
我目前正在努力的是收集事件数据的最佳方法。过去,规则对象总是通过以下方式收集数据:
- 解析当前 URL (基于已知的 URL 结构)。
- 为标签(如 h1 或标题)和属性(如表单名称)中的值抓取 DOM
- 挖掘各种实例化的 JS 对象以搜索其他数据。例如从 user.current.id 中提取用户的 id。
这在过去很有用,因为它允许在幕后执行跟踪。当然,收集方法首先要求人们小心他们更改的内容,因为更改对象和 DOM 结构看似安全,可能会对跟踪产生巨大影响。由于有很多不同的人为代码做出贡献,我们正在寻找一种更好的方式来处理数据收集。
一些已经浮出水面的想法是:
- 使用数据绑定将所有跟踪信息存储在 DOM 中。这具有透明的优点,但缺点是导致冗长。此外,如果单独使用,则需要将仅存在于 JS 对象中的数据传输到 DOM。
- 继续使用我们的非侵入式方法,但编写更广泛的单元测试。(这很简单,但我很乐意将其与更清洁的数据收集过程配对,以使其成为一项不那么艰巨的任务)
是否有任何可能有帮助的最佳实践、理念或建议?