Performance RequireJS降低页面加载时间

Performance RequireJS降低页面加载时间,performance,asynchronous,requirejs,amd,Performance,Asynchronous,Requirejs,Amd,一周前,我的web应用程序越来越大,我遇到了一些麻烦,我意识到我必须找到某种异步JS加载程序,以便在我真正需要的时候加载脚本 我找到了requireJS,读了很多关于它和AMD的书。一切似乎都很好,它将帮助我在模块中组织代码,我将拥有所有异步加载/依赖项解析的好处 我的应用程序是单页应用程序,所有HTML都使用模板在浏览器中呈现。我使用grunt将我所有的JS连接在一起并缩小,然后通过脚本标签加载它 我的应用程序的加载时间(我通过使用performance.now()在中设置一个变量,然后在应用

一周前,我的web应用程序越来越大,我遇到了一些麻烦,我意识到我必须找到某种异步JS加载程序,以便在我真正需要的时候加载脚本

我找到了requireJS,读了很多关于它和AMD的书。一切似乎都很好,它将帮助我在模块中组织代码,我将拥有所有异步加载/依赖项解析的好处

我的应用程序是单页应用程序,所有HTML都使用模板在浏览器中呈现。我使用grunt将我所有的JS连接在一起并缩小,然后通过脚本标签加载它

我的应用程序的加载时间(我通过使用
performance.now()
中设置一个变量,然后在应用程序渲染函数中设置另一个变量来测量)约为90毫秒

但令我惊讶的是,在将应用程序的核心更改为使用requireJS,并使用优化工具连接和缩小所有内容之后,加载时间提高到了150ms

我只是觉得这很奇怪,因为在这两种情况下,所有的JS都连接在一个文件中。如果requireJS必须发出另一个请求才能获取我的app.js,我会理解,但事实并非如此

因此,我的问题是: 有没有办法让requireJS加载更快?有什么解决办法吗?还有其他选择吗

我在谷歌上彻底搜索了类似的问题,但找不到任何提示

--编辑:

我创建这个JSFIDLE是为了向您展示我的意思:

如您所见,“开始”是指加载requirejs之后和定义“测试”之前的时间

“执行”是指执行“测试”内容的时间

“完成”是指回调时间

我不明白为什么仅仅调用一个刚刚定义的函数就需要78毫秒

我的测试结果是:

Start: 2ms
Executed: 80ms
Callback: 81ms
--编辑2

我刚刚使用curljs尝试了相同的JSFIDLE:

我的测试结果很好

Testing with curljs --

Start: 1ms
Executed: 1ms
Callback: 55ms
如您所见,代码一经定义就立即执行。通过进一步测试,我发现使用curljs,代码会按照定义执行,而requirejs会在需要时执行


由于这种差异,我不得不使用curljs。

我不确定你的意思,但在测试中,我没有进行任何ajax调用。这只是一个静态html和一个js文件,其中包含连接的内容。我正在运行一个本地apache服务器。请看一下我刚才添加的JSFIDLE。添加了另一个比较curljs和requirejs的FIDLE。有趣的结果。