Javascript 优化理解API
我试图更好地理解optimizely api是如何工作的。我是个新手。所以,如果我问一些非常明显的问题,请原谅 但我认为API是通过使用一个optimizely对象工作的,该对象有两个方法get和push,以及一个数据对象。但后来我在optimizely站点上看到了这段代码,它似乎在将变量窗口[optimizely]分配给数组[]。不应该是{}而不是[ ]。请帮忙Javascript 优化理解API,javascript,api,optimizely,Javascript,Api,Optimizely,我试图更好地理解optimizely api是如何工作的。我是个新手。所以,如果我问一些非常明显的问题,请原谅 但我认为API是通过使用一个optimizely对象工作的,该对象有两个方法get和push,以及一个数据对象。但后来我在optimizely站点上看到了这段代码,它似乎在将变量窗口[optimizely]分配给数组[]。不应该是{}而不是[ ]。请帮忙 var activated = function(event) { // The Optimizely snippet has be
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']);
(以下是指Optimizely X snippet JS API。)
对于那些寻求与Optimizely snippet的API交互的人,有两个执行阶段需要记住:
中都有
标记,并且它是同步评估的。在本例中,出现在script
标记上方的所有JS代码都是属于此阶段的代码script
标记下面的所有内容。尼特:这实际上是一种简化;JSAPI实际上在初始化的生命周期钩子之后的稍早时间就可用了window.optimizely
设置为一个API调用数组(每个调用都是一个对象)
在初始求值期间,Optimizely代码段将使用窗口中存在的任何预推式API调用。Optimizely
数组(如果存在),然后将其分配给窗口。Optimizely
具有整个文档中记录的get
函数的对象。因此,初始化后评估的代码应该期望与初始化的API进行交互,optimizely.get(…)
同样值得强调的是,在两个阶段进行API调用的方法表面上彼此相似:pre-init选项是一个数组,因此有一个push
方法;初始化后可用的API对象也有一个push
方法。它们都采用相同的参数:一个定义API调用的对象
在您给出的示例中,向激活的
生命周期钩子注册的API调用被预推送到窗口。优化
预推API调用数组。当浏览器计算代码段时,它将执行任何此类调用
请让我知道这是否有意义
来源:我在Optimizely的团队中负责代码片段。(以下是Optimizely X代码片段JSAPI。)
对于那些寻求与Optimizely snippet的API交互的人,有两个执行阶段需要记住:
中都有
标记,并且它是同步评估的。在本例中,出现在script
标记上方的所有JS代码都是属于此阶段的代码script
标记下面的所有内容。尼特:这实际上是一种简化;JSAPI实际上在初始化的生命周期钩子之后的稍早时间就可用了window.optimizely
设置为一个API调用数组(每个调用都是一个对象)
在初始求值期间,Optimizely代码段将使用窗口中存在的任何预推式API调用。Optimizely
数组(如果存在),然后将其分配给窗口。Optimizely
具有整个文档中记录的get
函数的对象。因此,初始化后评估的代码应该期望与初始化的API进行交互,optimizely.get(…)
同样值得强调的是,在两个阶段进行API调用的方法表面上彼此相似:pre-init选项是一个数组,因此有一个push
方法;初始化后可用的API对象也有一个push
方法。它们都采用相同的参数:一个定义API调用的对象
在您给出的示例中,向激活的
生命周期钩子注册的API调用被预推送到窗口。优化
预推API调用数组。当浏览器计算代码段时,它将执行任何此类调用
请让我知道这是否有意义
来源:我在Optimizely的团队中工作,该团队拥有该片段。这很有帮助,也很聪明。看起来google analytics使用了同样的技巧。对吗?var _gaq=_gaq | |[]_gaq推送(['''u setAccount','UA-XXXXX-X'])_gaq.push([''u trackPageview']);我现在明白了在初始化前推送的必要性。但是在后初始化阶段,为什么要使用push函数呢。为什么不简单地使用get函数从本地数据对象读取数据呢?我认为使用一个用于交互事件的公共接口更容易管理。当一个语法在所有情况下都有效时,为什么还要记录两个语法呢?这既有用又聪明。看起来google analytics使用了同样的技巧。对吗?var _gaq=_gaq | |[]_gaq推送(['''u setAccount','UA-XXXXX-X'])_gaq.push([''u trackPageview']);我现在明白了在初始化前推送的必要性。但是在后初始化阶段,为什么要使用push函数呢。为什么不简单地使用get函数从本地数据对象读取数据呢?我认为使用一个用于交互事件的公共接口更容易管理