0

我使用 YSlow 来检查我的网络的加载速度。根据规则,最好有一个大的外部 javascript,而不是多个外部 javascript。规则中写了使用大量外部javascript会导致大量http请求,这是不好的。

我正在使用 CKEditor,我想将它与其他 javascripts 组合成一个大的外部 javascript。但是,每次我加载它时,总是会出现错误。阅读代码后,我想我知道它为什么会发生。

if ( CKEDITOR.loader )
CKEDITOR.loader.load( 'core/ckeditor' );
else
{
    // Set the script name to be loaded by the loader.
    CKEDITOR._autoLoad = 'core/ckeditor';

    // Include the loader script.
    if ( document.body && (!document.readyState || document.readyState == 'complete') )
    {
        var script = document.createElement( 'script' );
        script.type = 'text/javascript';
        script.src = CKEDITOR.getUrl( '_source/core/loader.js' );
        document.body.appendChild( script );
    }
    else
    {
        document.write(
        '<script type="text/javascript" src="' + CKEDITOR.getUrl( '_source/core/loader.js' ) + '"></script>' );
    }
 }

CK 编辑器似乎加载了其他具有相对位置的外部 javascript。将脚本移动到其他文件中肯定会导致错误。

所以,我的问题是:有什么通用的解决方法吗?我的意思是,它可能是其他具有这种行为的脚本(不仅是 CK-Editor)。

编辑:我认为使用 head.js (http://headjs.com/) 是最好的选择

4

2 回答 2

1

当尝试一次动态加载所有 JavaScript 时,通常会遇到依赖问题或库冲突问题。

示例:依赖性问题 - 在加载 jQuery 之前需要一个需要 jQuery 的文件。冲突问题 - 在处理大型产品时,您最终可能会遇到冲突的库。例如加载两个具有相同库名称但功能不同的文件。

如果您确实看到速度变慢了,并且想要在文件组合代码中组合所有 JS 文件集依赖项。一个简化的例子是创建一个库数组,这些库在任何主要的 JS 片段之前加载。

希望这有助于解决您的问题!

于 2012-08-31T01:33:16.610 回答
0

好吧,我不知道您使用的是哪种服务器语言,但如果是 PHP,我建议您尝试使用 Smartoptimizer 解决您的连接/缩小问题。

使用它,您只需按照自己的方式添加您的 js,它会负责处理它们。现在,我将它与 YepNope 一起使用,我相信它也可以与 HeadJS 一起使用。

于 2012-08-31T03:20:01.053 回答