首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解最优API

理解最优API
EN

Stack Overflow用户
提问于 2017-08-10 18:41:20
回答 1查看 393关注 0票数 0

我试图更好地理解optimizely是如何工作的。我是个新手。所以请原谅我在问一些很明显的事情。

但是我认为API的工作原理是使用一个optimizely对象,它有两个方法get和push,以及一个数据对象。但是,我在optimizely站点上看到了这段代码,它似乎在将t、窗口变量最优地分配给数组。不是应该是{}而不是。请帮帮忙

代码语言:javascript
运行
复制
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']);
EN

回答 1

Stack Overflow用户

发布于 2017-08-17 18:46:23

(下面引用的是Optimizely片段JS。)

对于那些试图与最佳代码片段的API交互的人,有两个执行阶段需要记住:

  1. Pre-initialization:,即浏览器评估最佳代码段之前的时间。大多数人在文档的<script>中都有<head>标记,并且它是同步计算的。在本例中,出现在script标记上的所有JS代码都是处于此阶段的代码。
  2. Post-initialization:,在评估最佳片段之后的时间。对于上面描述的常见情况,这是script标记下面的所有内容。nit:这实际上是一种简化;在初始化的生命周期钩子中,JS实际上更早一些可用。

在某些情况下,人们希望在优化初始化之前(即在上面的第1阶段)之前,对API进行“预推”或排队调用。那时,您可以编写JS,将window.optimizely设置为一个API调用数组(每个调用都是一个对象)。

在初始评估期间,优化片段将使用window.optimizely数组中存在的任何预推API调用(如果存在的话),然后将包含在整个文档中的get函数的对象分配给window.optimizely。因此,对初始化后进行评估的代码应该与初始化的API optimizely.get(...)交互。

还值得强调的是,在中进行API调用的方法从表面上看与阶段相似:pre选项是一个数组,push方法也是如此;可用的API对象-init也有一个push方法。它们都采用相同的参数:定义API调用的对象。

在您给出的示例中,向activated生命周期挂钩注册的API调用被预推到预推API调用的window.optimizely数组中。当浏览器评估代码段时,它将执行任何这样的调用。

请让我知道这是否有意义!

来源:我在Optimizely的团队工作,拥有这个代码片段。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45621293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档