我使用YSlow来检查网络的加载速度。 根据规则,最好有一个大的外部JavaScript而不是许多外部javascripts。在规则中写道,使用大量外部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/)是这里最好的选择
答案 0 :(得分:1)
当尝试动态加载所有JavaScripts时,通常会遇到依赖性问题或库冲突问题。
实施例: 依赖性问题 - 在加载jQuery之前需要一个需要jQuery的文件。 冲突问题 - 在处理大型产品时,您最终可能会遇到冲突的库。例如,加载具有相同库名但功能不同的两个文件。
如果你真的看到很多速度变慢,并希望将所有JS文件集合依赖项组合在文件组合代码中。一个简化的例子是创建一个在任何主要JS片段之前加载的库数组。
希望这有助于解决您的问题!
答案 1 :(得分:0)
好吧,我不知道您使用的是哪种服务器语言,但如果是PHP,我建议您尝试使用Smartoptimizer来处理串联/缩小问题。
使用它,你只需添加你的js,它就会处理它们。如今,我正在和YepNope一起使用它,我相信它也适用于HeadJS。