【问题标题】:How services api snippets works服务 api 片段的工作原理
【发布时间】:2021-06-21 16:16:44
【问题描述】:

我正在将一个网站集成到 Facebook Pixel,虽然我知道我只能将 sn-p 放在页面的头部,但我有兴趣了解这个 sn-p 的工作原理。类似的模式也发生在其他服务中:

< script >
  ! function(f, b, e, v, n, t, s) {
    if (f.fbq) return;
    n = f.fbq = function() {
      n.callMethod ?
        n.callMethod.apply(n, arguments) : n.queue.push(arguments)
    };
    if (!f._fbq) f._fbq = n;
    n.push = n;
    n.loaded = !0;
    n.version = '2.0';
    n.queue = [];
    t = b.createElement(e);
    t.async = !0;
    t.src = v;
    s = b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t, s)
  }(window, document, 'script',
    'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '{your-pixel-id-goes-here}');
fbq('track', 'PageView'); 
< /script> 
< noscript >
  <
  img height = "1"
width = "1"
style = "display:none"
src = "https://www.facebook.com/tr?id={your-pixel-id-goes-here}&ev=PageView&noscript=1" / >
< /noscript>

我不明白它是如何被调用的,每个参数是什么意思,这个函数应该返回什么。

【问题讨论】:

    标签: javascript reactjs typescript facebook-pixel


    【解决方案1】:

    它正在创建一个名为 fbq 的对象并将其附加到窗口。它还在页面上预先添加了一个脚本标记。该脚本标签链接到 connect.facebook.net 网址。我认为这对 fbq 有更多作用,因为此时 fbq 看起来很稀疏。

    sn-p 本身是一个IIFE。它声明一个函数,然后立即调用它。该函数接受参数f, b, e, v, n, t, s,这很可爱,但不能帮助任何人理解代码。当它调用函数时,它会将window 传递给fdocument 传递给b"script" 传递给e,并将url 传递给v。其他参数未填充。 nts 都在 sn-p 内部分配。将它们作为函数参数可以让作者避免使用var n = ...,这仅在尝试优化每个可能的字节时才有用。当作者将事物分配为!0 时,可以看到另一个大小优化,即true,但字符数减半。

    【讨论】:

    • 谢谢查尔斯,你的解释会很有帮助。 Bob大叔每次看到那种“可爱”的变量名估计都会哭。在使用这些 sn-ps 的情况下,使用这些声明和“!0”保存每个字节是否仍然有意义?
    • 并非如此。这个特殊的 sn-p 可能在数百万页上,所以它可能会有所不同,但大多数代码不会从这种优化中受益。一个好的 uglifier 应该足以用于生产。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2021-03-16
    • 2020-02-15
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多