加载Google Javascript客户端库和自定义端点客户端库的正确方法是什么

Luk*_*ell 3 javascript google-app-engine google-plus-one google-plus

我正在使用Google Javascript客户端API,我想知道以下两段代码之间的区别是:

//in the html file
<script src="https://apis.google.com/js/client.js?onload=gapiInit"></script>

//in a javscript file
gapiInit = function() {
    alert("Loading the Libs!");

    var numApisToLoad;

    var callback = function(){
        if(--numApisToLoad == 0) {
            alert('APIs Ready!');
            }
    };

    numApisToLoad = 1;

    gapi.client.load('plus','v1',callback);
};
Run Code Online (Sandbox Code Playgroud)

还有这个..

<script>
    // Asynchronously load the client library
    (function() {
        var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
        po.src = 'https://apis.google.com/js/client:plusone.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
    })();
</script>
Run Code Online (Sandbox Code Playgroud)

我在谷歌提供的各种示例中都看到过,Google Plus登录示例使用后者,而云端点示例使用前者.

他们只是两种做同样事情的方式吗?我使用它真的很重要吗?

developer.google.com中的示例

//端点 -
https://developers.google.com/appengine/docs/java/endpoints/consume_js

//加登录(似乎同时执行) -
https://developers.google.com/+/web/people/

//只是异步脚本.. -
developers.google.com/+/web/api/javascript

(对不起狡猾的链接,堆栈溢出不会让我放两个以上)

任何见解都会非常感激.

感谢大家.

Kyl*_*sen 5

这个:

<script src="https://apis.google.com/js/client.js?onload=gapiInit"></script>
Run Code Online (Sandbox Code Playgroud)

在继续之前将完全加载client.js.确保在页面上的所有标记之后放置它以提高性能.

这个:

<script>
    // Asynchronously load the client library
    (function() {
        var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
        po.src = 'https://apis.google.com/js/client:plusone.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
    })();
</script>
Run Code Online (Sandbox Code Playgroud)

好像它会加载客户端和plusone js模块(请注意客户端:plusone的路径).它将在后台加载.该网址似乎缺少回调:

https://apis.google.com/js/client:plusone.js?onload=onLoadCallback
Run Code Online (Sandbox Code Playgroud)

如果您想稍后或有条件地加载它,这有好处.完成加载后,它将调用您必须定义的onLoadCallback函数.

请参阅https://developers.google.com/+/web/api/javascript

  • 或者只是在脚本标签中使用`async defer` ......不需要恐慌 (2认同)