了解Optimizely API

时间:2017-08-10 18:41:20

标签: javascript api optimizely

我想更好地了解优化api的工作原理。我是新手。如果我问一些非常明显的事情,请原谅。

但我认为API的工作原理是使用一个带有两个方法get和push的优化对象,以及一个数据对象。但后来我在优化网站上看到了这个代码,似乎是将他的变量窗口[优化]分配给数组[]。不应该是{}而不是[ ] 即可。请帮忙

var activated = function(event) {
// The Optimizely snippet has been activated.
var visitorId = window.optimizely.get('visitor_id').randomId;
console.log("The visitor ID is: " + visitorId);
};

window["optimizely"] = window["optimizely"] || []; 
// SHOULDN"T THE ABOVE BE **window["optimizely"] = window["optimizely"] || {}
window["optimizely"].push({
type: "addListener",
filter: {
  type: "lifecycle",
  name: "activated"
},
// Add the activated function as a handler.
handler: activated
});

window["optimizely"].push(['trackEvent', 'watchedVideo']);

1 个答案:

答案 0 :(得分:4)

(以下是指Optimizely X片段JS API。)

对于那些寻求与Optimizely代码段API进行交互的人,请记住以下两个执行阶段:

  1. 预初始化:浏览器评估之前的时间。大多数人在文档的<script>中都有<head>标记,并且它是同步评估的。在这种情况下,script标记上方出现的所有JS代码都是此阶段的代码。
  2. 初始化后 评估Optimizely片段后的时间。对于上述常见情况,这是script标记以下的所有内容。尼特:这实际上是一种简化;在初始化生命周期钩子之前,JS API实际上稍早可用。
  3. 在某些情况下,在Optimizely初始化之前(即,在上面的阶段1期间),人们想要“预推”或排队调用API。那时,您可以编写JS,将window.optimizely设置为API调用数组(每个调用都是一个对象)。

    在初始评估期间,Optimizely代码段会消耗window.optimizely数组中存在的任何预推送API调用(如果存在),然后将window.optimizely分配给具有{{1}的对象在整个文档中记录的函数。因此,初始化后评估的代码应该与初始化的API get进行交互。

    值得强调的是,在两个阶段进行API调用的方法在表面上彼此相似:pre-init选项是一个数组,因此有一个optimizely.get(...)方法;初始化的API对象具有push方法。它们都采用相同的参数:定义API调用的对象。

    在您给出的示例中,向push生命周期钩子注册的API调用被预先推送到activated预推送API调用数组。当浏览器评估该片段时,它将执行任何此类调用。

    如果有意义,请告诉我!

    来源:我在拥有该代码段的团队中使用Optimizely。