Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要时调用函数_Javascript_Jquery_Function_Asynchronous_Page Load Time - Fatal编程技术网

Javascript 需要时调用函数

Javascript 需要时调用函数,javascript,jquery,function,asynchronous,page-load-time,Javascript,Jquery,Function,Asynchronous,Page Load Time,因此,在我的页面中,我有一些小脚本,一旦你访问了网站,我真的不需要加载这些脚本,事实上,用户在整个会话中可能根本不需要它们 此外,根据这一点:这也不是一个好的做法 例如,目前我在“When dom ready”(当dom就绪时)中有所有内容: $(function() { // most of the code of which is not needed }); 如果我没有将代码放在Dom ready中,它在大多数情况下都是不可执行的。所以我想为每个代码段分别执行不同的函数 对于exmap

因此,在我的页面中,我有一些小脚本,一旦你访问了网站,我真的不需要加载这些脚本,事实上,用户在整个会话中可能根本不需要它们

此外,根据这一点:这也不是一个好的做法

例如,目前我在“When dom ready”(当dom就绪时)中有所有内容:

$(function() {
 // most of the code of which is not needed
});
如果我没有将代码放在Dom ready中,它在大多数情况下都是不可执行的。所以我想为每个代码段分别执行不同的函数

对于exmaple:

function snippet1() {
   // Code here
}
然后,当我需要那个片段时,我会在需要时用鼠标点击加载它。(不一定是一只老鼠,这取决于我需要装载什么)

例如:

$('#button1').click(function() {
  snippet1();
});
因此,我的问题是:这是异步加载函数的方法,因此可以减少页面加载时间,还是有更好的方法?我没有在任何地方阅读过我的示例,我只是想到了它


请注意,我知道异步加载,但这不是我的选择,因为我可以将所有函数合并到一个将被缓存的js文件中,因此页面加载时间将少于每次加载异步js文件的时间。

是的,您应该尽可能定义对象、函数、,等。在
文档的外部。就绪
包装。有些开发人员会定义包装器外部的所有内容,然后调用包装器内部的
init()
函数来加载其他内容。我就是这样一个人

至于异步,这并不能实现真正的异步加载,但它可以加快页面速度,因为页面加载的工作量要少得多


通常,如果您没有使用像requireJS或yepnope这样的脚本加载程序,最好将所有脚本引用——或者至少是那些不需要立即运行的脚本引用——放在正文的末尾,这样页面就会呈现在资源之前,而这些资源在页面加载之后才会运行。

我会使用RequireJS()或类似的库加载所有其他资源


将不需要立即分离脚本的所有内容放在一起,并在加载主要内容后加载。

您正在混合几种内容:

  • 页面加载时间
  • JavaScript解析时间-加载脚本后,必须对其进行解析(错误检查、编译为字节码等)
  • 函数执行时间
  • 由于不希望拆分脚本,因此无法对页面加载时间做太多的调整。你可以考虑把它分成两部分:一个是你一直需要的,一个是“不需要的”部分。在后台加载稀有函数

    请注意,在站点被访问一次并且您确保浏览器可以缓存文件之后,页面加载时间变得非常没有意义

    如果要减少分析时间,有两个选项:

  • 不要装载你不需要的零件
  • 压缩脚本。谷歌有一个很好的工具来实现这一点:互联网。除了加快脚本速度外,它还将检查许多常见错误

  • 最后一部分是执行次数。只有在函数被调用时,以及当它们执行大量操作时,这些才是相关的。在您的情况下,我想您可以忽略这一点。

    既然我自己可以制作,为什么还要加载整个插件?它非常小,而且经过了良好的测试。也可以节省您的时间。谢谢。提出一个好建议。有关于它的文章吗?看看这篇文章和答案,其中包括一个到雅虎开创性的最佳实践文章的链接:嗨,谢谢你的回答。我知道所有最小化和减少加载时间的方法。剩下的是解析时间。我的所有脚本都是异步加载、缩小、缓存在Akamai的CDN上等。我只是其中一个沉迷于加载时间和性能的人,我只是在尝试让一切都成为可能。在所有在线页面加载脚本上(webpagetest、yslow、google的页面速度,我得到100/100或满分。我不是在吹牛,我只是想解释一下,我对大多数事情都了如指掌)。我的实际页面甚至在使用缓存清单。我只是想知道是否有更好的做法,我不知道。在这种情况下,您唯一剩下的选择就是拆分脚本。由于浏览器将缓存它们,如果只在2-3中拆分它们,这不会对加载时间产生太大影响。事实上,这可能会有所帮助,因为将来的更改可能只会影响2/3脚本中的一个,因此浏览器不必重新加载所有内容。