我正在使用facebook SDK for Javascript,有人可以解释异步加载SDK是什么意思,这段代码如何表示它是异步加载的,以及这将如何影响我的应用程序。
// Load the SDK asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
答案 0 :(得分:1)
min2bro,一般来说,脚本/ SDK可以加载两种方式:
同步。这是包含内容时的默认设置。假设当你要求某些东西时,浏览器必须等待它被包含才能获取其他内容。换句话说,它一次只做一件事。这很简单。它是“线性的”,你可以很容易地追踪发生的事情。
优点:简洁。易于理解,更易于使用。减少开发人员的头痛。
缺点:速度和用户体验。如果您在同一页面(来自不同的服务)上有5个社交类似/共享/ pin /任何按钮,则会显着减慢您的页面速度,因为用户可能无法向下滚动并查看其余部分页面,因为他们正在等待出现类似的按钮。
异步。对于脚本,只有手动指定它才会发生,就像您在这里尝试一样。这意味着您说“用户可以在Facebook SDK可用之前查看整个页面并开始滚动”。 “Facebook SDK”指的是与Facebook相关的任何功能,如“喜欢”按钮,Facebook连接等
优点:速度和用户体验。如果您的页面上有很多脚本,您的用户仍然可以阅读文章/查看页面并欣赏内容。
缺点:难以使用。根据您获得的站点,您可能需要重新构建代码,以便等待Facebook SDK可用。您不能在粘贴的代码段之后包含随机脚本,并希望它能够正常工作。您必须将您的功能包装在事件处理程序中,特别是window.fbAsyncInit = function () { ... }
TL; DR:异步意味着如果它依赖于Facebook SDK,您可能需要对自己的代码进行更改。像按钮等可能需要更长的时间出现。 Async也意味着更好的用户体验。