什么是Facebook的功能__d

rgb*_*wed 2 javascript facebook

我正在开发一个项目(希望)涉及利用已经内置到Facebook中的一些javascript.但是我马上遇到了障碍,我无法弄清楚是什么__d.

如果你看一下源javascript文件,几乎每个命令都以 __d

例如:

__d("legacy:live-timer",["LiveTimer"],function(a,b,c,d){a.LiveTimer=b('LiveTimer');},3);
Run Code Online (Sandbox Code Playgroud)

但我找不到任何javascript文件中的任何__d实际操作.是不是必须在某处定义所有这些其他功能才能利用它?

更新:

所以,假设有一个像这样的javascript的网站......

function alertSomething(var) {
    if (var) alert("Here it is: "+var);
}

if (some condition) alertSomething("something");
Run Code Online (Sandbox Code Playgroud)

现在让我们说我有一个Chrome扩展程序,我可以将自己的Javascript注入页面.无法\我的Chrome扩展程序Javascript有这样的东西......

if (some other condition) alertSomething("something else");
Run Code Online (Sandbox Code Playgroud)

因此,我将利用页面上已存在的JavaScript中的一些代码?

Gau*_*dia 8

至于,我检查过Facebook JavaScript SDK.我相信它使用依赖注入机制.这是两个网址.

制作:http://connect.facebook.net/en_US/all.js(混淆)

开发:http://connect.facebook.net/en_US/all/debug.js(deobfuscated)

如果你检查debug.js,你可以看到require, __d, __t等等.__d更像是来自RequireJS的定义函数(http://requirejs.org/docs/api.html#define)

__d = function(/*string*/ id, /*array<string>*/ deps, factory,
      /*number?*/ _special) {/*TC*/__t([id,'string','id'],[deps,'array<string>','deps'],[_special,'number?','_special']);/*/TC*/
Run Code Online (Sandbox Code Playgroud)


小智 5

该函数是用于定义模块的RequireJS__d API 。

例子:

__d('Example', [], function a(b, c, d, e, f, g, h) {
 'use strict';
  if (c.__markCompiled) c.__markCompiled();
  f.exports = {
      a: "Hello World"
      };
 }, null);
Run Code Online (Sandbox Code Playgroud)

称呼:

require('Example');
Run Code Online (Sandbox Code Playgroud)

输出:

  Object {a: "Hello World"}
Run Code Online (Sandbox Code Playgroud)