为什么Twitter将字符串传递给它的脚本加载JS片段
Why does Twitter pass strings into it's script loading JS snippet?
下面是用于向网页添加Tweet按钮的Twitter脚本加载片段。
!function(d,s,id){
var js, fjs = d.getElementsByTagName(s)[0];
if (!d.getElementById(id)){
js = d.createElement(s);
js.id = id;
js.src = "//platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js,fjs);
}
}(document,"script","twitter-wjs");
在最后一行,他们将"script"
传递给IIFE参数,而不是仅仅将其声明为一个变量。
这样做的好处是什么?它只是为了在代码长度上节省几个字符吗?
如果他们使用IIFE之外的变量,它可能会干扰10,000个人网页上的10,000个人javascript中的变量。如果已经有一个变量的名字,他们在页面上的包含可能会干扰它的工作方式,人们会说,"我试图使用Twitter,但它破坏了我的网页。"
按照他们的方式去做,尽可能地减少对周围代码的影响。
如果他们在里面放了一个变量,那将很难记录要添加到一个已经工作的网页上的内容。他们必须教一个javascript新手如何格式化字符串变量,新用户必须在代码的两个地方输入他们的信息。
这样,他们只需要显示所有行,但最后一行为"魔术"。"把这些台词抄进去",他们说。
然后他们解释说你必须把两个东西的名字放在最后一行的引号里。这样更容易解释。
无可否认,这并不容易。但更容易解释的是,成千上万的人使用它可以增加他们的市场渗透率,可以这么说。
相关文章:
- Joomla异步脚本加载jdoc头
- 将自定义脚本加载到Vue.js组件中
- 延迟加载 脚本加载和/或执行
- 脚本加载问题
- I'当我试图将java脚本加载到web视图中时,我得到了一个空白屏幕
- 脚本加载脚本广告
- 当我有一个脚本数组时,如何等待脚本加载
- 将Dropbox API脚本加载到chrome扩展时出错
- 异步脚本加载
- 一旦第三方脚本加载失败,立即运行一段JavaScript
- 有没有办法阻止脚本加载两次?JavaScript
- 无法使用 AJAX 将脚本加载为纯文本
- 我怎样才能说服WebStorm我的用户脚本加载jQuery
- 需要JS脚本加载顺序
- 处理不同设备的页面中的脚本加载
- 显示加载 gif,直到脚本加载完毕
- jQuery Mobile pageinit,脚本加载和其他东西
- IE11 脚本加载不起作用(有时)
- 有条件地将内容脚本加载到 Safari 扩展中,就像在 FF/Chrome 中一样
- 如何在Chrome开发工具中找到以下脚本加载时间线